| 赞 | 0 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2014-9-21 |
| 在线时间 | 95 小时 |
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 95 小时
- 注册时间
- 2013-4-10
- 回帖
- 74
|
楼主 |
发表于 2013-9-19 18:37:05
|
显示全部楼层
Sion 发表于 2013-9-19 13:40 
上面的方法是在 Bitmap 上画直线,从点(x1,y1)到点(x2,y2),颜色参数 r g b + alpha。
生成一个精灵 ... - class Bitmap
- def draw_wu_line(x1, y1, x2, y2, r,g,b,a)
- @zhixian = Sprite.new
- @zhixian.bitmap = Bitmap.new(544, 416) #两行
-
- dx = x2 - x1
- dy = y2 - y1
- if dx.abs < dy.abs
- t_ = x1; x1 = y1; y1 = t_
- t_ = x2; x2 = y2; y2 = t_
- t_ = dx; dx = dy; dy = t_
- end
- if x2 < x1
- t_ = x1; x1 = x2; x2 = t_
- t_ = y1; y1 = y2; y2 = t_
- end
- set_pixel(x1, y1, Color.new(r,g,b,a))
- set_pixel(x2, y2, Color.new(r,g,b,a))
- gradient = dy.fdiv(dx)
- intery = y1 + gradient
- for x in (x1 + 1)..(x2 - 1)
- y1 = intery.to_i
- y2 = intery.ceil
- set_pixel(x, y1, Color.new(r,g,b, intery.rfpart * a))
- set_pixel(x, y2, Color.new(r,g,b, intery.fpart * a)) if y1 != y2
- intery = intery + gradient
- end
-
- @zhixian.bitmap.draw_wu_line(50,50,255,255 , 255 , 128 , 0 , 255)
- #测试常量,想着成功再改为变量……然后一直没成功
-
- loop do
- Graphics.update
- end
- end
-
- end
复制代码 瞎鼓捣了半天,依旧不行,游戏中就没成功显示过哪怕一次,也不知道问题错在哪里。
这是改动至今的版本,我已经不行了……让我厚着脸皮再伸手党一回吧……@Sion ,灰常感谢&抱歉 |
|