Project1

标题: 求解,如何将一个bitmap切出一个圆形,成为新的bitmap? [打印本页]

作者: 7408    时间: 2014-5-14 10:41
标题: 求解,如何将一个bitmap切出一个圆形,成为新的bitmap?
问题:现在有一个bitmap,怎么对它进行切割(圆形)分离?
另外问下大家有没有对bitmap的处理的范例?谢谢~
作者: 7408    时间: 2014-5-18 12:11
自顶一下,拜托各位花点时间教下吧 thanks~~
作者: 亿万星辰    时间: 2014-5-18 12:51
Bitmap类以默认的系统而言,只能以一个矩形的形式来体现。
作者: 克莉丝    时间: 2014-5-18 13:24
rgss本身没有定义这种方法、可以利用blt实现,不过不优化算法的话效率会异常地低下



既然你提出这个问题说明你对脚本是了解的,下面的代码稍微花了点时间写、你可以参考后自己整合成一个方法。
  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-5-18 20:55
可以用 PS 试试。
作者: 刘飞洋    时间: 2014-5-23 21:40
直接PS,建一个圆形选区,然后羽化。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1