Project1

标题: 怎么描绘非矩形? [打印本页]

作者: saturnfjh    时间: 2013-8-12 09:52
标题: 怎么描绘非矩形?
本帖最后由 saturnfjh 于 2013-8-14 17:41 编辑

问题一:怎么描绘平行四边形?

问题二:如果要按角度顺时针或者逆时针描画弧形填充怎么弄?



左下角那个弧形的槽,如果是TP填充的话,要怎么弄?

@亿万星辰  

@巴尔德

@xggzga117  
作者: end55rpg    时间: 2013-8-12 11:44
blt
stench啥的

作者: 巴尔德    时间: 2013-8-12 14:14
本帖最后由 巴尔德 于 2013-8-12 14:17 编辑

██████████████████████████████
 ██████████████████████████████
  ██████████████████████████████
   ██████████████████████████████
    ██████████████████████████████
     ██████████████████████████████
这个东西远看就是平行四边形了
作者: yychchhh    时间: 2013-8-12 14:30
◢█◤
运用三角形和方形即可
作者: xggzga117    时间: 2013-8-12 21:01
楼上各位正解。
做出一个不规则的图形的方法之一就是用N个规则图形拼……
作者: saturnfjh    时间: 2013-8-12 21:07
xggzga117 发表于 2013-8-12 21:01
楼上各位正解。
做出一个不规则的图形的方法之一就是用N个规则图形拼…… ...

也就是说,作一个长120,高40的30度角平行四边形就是:

for i in 0..39
  contents.fill.rect(0 + i * 2, 40 - i, 120, 1)
end

这样?
作者: 亿万星辰    时间: 2013-8-13 07:02
saturnfjh 发表于 2013-8-12 21:07
也就是说,作一个长120,高40的30度角平行四边形就是:

for i in 0..39
  1. for i in 0...40
  2.   s.bitmap.fill_rect(i / Math.tan(Math::PI / 6), i, 120, 1, Color.new(255, 0, 0))
  3. end
复制代码
这样才对吧同学……
作者: xggzga117    时间: 2013-8-13 15:40
这就不知道了……弧形我个人都是用点像素画的……
作者: 巴尔德    时间: 2013-8-15 12:22
你可以继续按水平的方式来降低血槽的高度

151319i7mm1lm7m1g1b7a7.jpg (65.25 KB, 下载次数: 30)

151319i7mm1lm7m1g1b7a7.jpg

作者: saturnfjh    时间: 2013-8-15 14:04
巴尔德 发表于 2013-8-15 12:22
你可以继续按水平的方式来降低血槽的高度

这确实是个办法,但是如果这是个U型槽,这样做的话就不成立了?
作者: 巴尔德    时间: 2013-8-15 14:17
如果真的就是圆形的血槽,那么也是有很多奇奇怪怪的方法来解决的,比如运用sprite的angle方法,或者用数学方法来做填充等等。
作者: xggzga117    时间: 2013-8-18 15:59
U型槽可以分成左右两半(其实我也不是很懂)。
作者: end55rpg    时间: 2013-8-18 16:07
圆槽不是简单到爆了么:一个圆形满血图,rect来显示当前部分。。。。




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