查看: 3792|回复: 5

[已经解决] 求解,如何将一个bitmap切出一个圆形,成为新的bitmap?

[复制链接]
梦石
0
星屑
255
在线时间
509 小时
注册时间
2010-10-1
回帖
82
发表于 2014-5-14 10:41:31 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
问题:现在有一个bitmap,怎么对它进行切割(圆形)分离?
另外问下大家有没有对bitmap的处理的范例?谢谢~
梦石
0
星屑
255
在线时间
509 小时
注册时间
2010-10-1
回帖
82
 楼主| 发表于 2014-5-18 12:11:10 来自手机 | 显示全部楼层
自顶一下,拜托各位花点时间教下吧 thanks~~
回复

使用道具 举报

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
回帖
5038

贵宾

发表于 2014-5-18 12:51:30 | 显示全部楼层
Bitmap类以默认的系统而言,只能以一个矩形的形式来体现。

点评

恭喜结婚  发表于 2014-5-18 13:34
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复

使用道具 举报

梦石
0
星屑
68
在线时间
585 小时
注册时间
2013-5-25
回帖
1484
发表于 2014-5-18 13:24:37 | 显示全部楼层
rgss本身没有定义这种方法、可以利用blt实现,不过不优化算法的话效率会异常地低下

QQ截图20140518132153.jpg

既然你提出这个问题说明你对脚本是了解的,下面的代码稍微花了点时间写、你可以参考后自己整合成一个方法。
  1. def y_get_circle_width(r,y) #根据相对圆心y坐标获得横向宽度
  2.   return 0 if r.abs < y.abs
  3.   return Math.sqrt(r ** 2 - (y.to_f) ** 2) * 2
  4. end
  5. bitmap1 = Bitmap.new("miu.jpg")
  6. bitmap2 = Bitmap.new(666,666)
  7. sprite = Sprite.new

  8. r = 64 #半径
  9. ox = 64 #位图上圆心坐标
  10. oy = 64

  11. sx = ox - r #获得左上顶点坐标
  12. sy = oy - r


  13. sprite.bitmap = bitmap2
  14. sprite.x = 320-64
  15. sprite.y = 240-64

  16. (r*2).times{|y|
  17. width = y_get_circle_width(r,y-r) #根据相对圆心y坐标获得横向宽度
  18. bx = sx + r - width / 2 #获得blt的起点坐标
  19. by = sy + y

  20. rect = Rect.new(bx,by,width,1)
  21. bitmap2.blt(bx,by,bitmap1,rect)

  22. }


  23. loop{Graphics.update}
复制代码

点评

嗯 谢谢~知道了  发表于 2014-6-4 14:31

评分

参与人数 2星屑 +500 梦石 +1 收起 理由
天地有正气 + 500 精品文章
myownroc + 1 精品文章

查看全部评分

回复

使用道具 举报

梦石
0
星屑
34471
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2014-5-18 20:55:13 | 显示全部楼层
可以用 PS 试试。
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
677
在线时间
509 小时
注册时间
2011-4-25
回帖
155
发表于 2014-5-23 21:40:50 | 显示全部楼层
直接PS,建一个圆形选区,然后羽化。

点评

治标不治本  发表于 2014-5-24 18:45
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部