Project1

标题: 【VX】Bitmap中圆形区域的问题 [打印本页]

作者: nanaka    时间: 2011-12-24 22:09
标题: 【VX】Bitmap中圆形区域的问题
本帖最后由 nanaka 于 2011-12-25 00:51 编辑

具体是想将bitmap中的一个半径为r的圆形区域设置为透明,
现在是用的两重循环枚举该圆外切正方形内的每一个点,
判断该点是否在圆内后用set_pixel设置为透明。
但是这个圆形区域的r最大会到100个像素,于是响应时间大概有0.2s
求一个更好的方法实现……

懒得开高级模式结果没的系统分送了,有补救方法吗orz
--------------------------------------------------------------------------------------
枚举1/4圆关于x、y、原点对称处理解决了……
作者: Wind2010    时间: 2011-12-24 22:15
或者可以将圆划分为若干个矩形来fill_rect?
作者: 九夜神尊    时间: 2011-12-25 03:16
四叉树咯,这是很好的解决平面问题的方法。
先已外切正方形开始,田字平分4块。先第一快,判断4个角是否都在园内,如果都在园内,就都透明,都在园外就都不透明。
如果4个角有的在外,有的再内,则将这块正方形继续田字分成4个小正方形,反复上面的算法,一直分到1像素。
这么说不知道你看懂没。
但是这种算法并不是最优。不过确实很实用的方法,可用于多数情况。四叉树,百度一个。

专用算法,专门针对你说的园的算法。
for i in 1..9
     删除区域(-sin(i*10º),-cos(i*10º),

sin(i*10º),cos(i*10º))
end

不知道能不能看懂,
那个1..9只是随便写的,数字越大,画出来的就越精细。




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