|
主题: 关于绘制线段问题
|
rainy_5d
职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
|
#12001/6/4 23:20:12
昨天看到一个随意绘制线段的程序(类似windows中画图的画笔),挺不错的,但是有一点感到困惑。
程序中大致的思路是定义一个BMP的点,然后用list记录鼠标拖过的点,连点成线,这就必然出现一个问题,拖动快的时候,线段有断的地方,若拖动慢,则线段很平滑。
我看到在director中的Paint,是这样的,线段的平滑与否和拖动速度有关,然而在windows中的图画程序却与拖动速度无关,始终平滑,不知道写类似windows中图画的画笔绘制线段程序应如何下手。
请各位高手赐教。
|
donlee
职务:普通成员
等级:1
金币:1.0
发贴:271
注册:2000/12/8 8:52:18
|
#22001/6/5 8:25:46
在D确是画出了不连续的点,可以看它的demo。如果是画线的话,可以用下面的方法: 假设我们希望从鼠标按下的点画到鼠标放开的点,则可在mousedown定义一个起始点,在exitframe中定义结束点,用image lingo来重新画线(不是描点)。 但对于曲线这样做就不行了。
|
改将
职务:普通成员
等级:1
金币:0.0
发贴:102
注册:2006/2/11 1:14:46
|
#32001/6/5 14:29:19
这原来我在director中做过的,可能是由于我的功力不到家的缘故吧!做出来的东西如果用于我的那个画板主程序中,会有延迟的现象。可是director中行为库中就有一行为写的很好。用它就象在windows下的画板下工作一样的快速。可以参考一下。 还有在director中我一直无法做到填充的效果。就是像windows中的那样。随手画一个图形后,即可选色填充。 望高手赐教。
|
donlee
职务:普通成员
等级:1
金币:1.0
发贴:271
注册:2000/12/8 8:52:18
|
#42001/6/6 8:23:19
1、为得到流畅的效果,就注意设置高的tempo,同时在这一帧中不要给cpu与显示系统太重的负荷。 填充: 2、如果是单色可以用一个黑色的member,在sprite中设置前景色的方法。甚至填充pattern用imagelingo也应该是可以做出的,但效率一定会受影响。 第2点我没测试过。
|
愁眉不展
职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2000/12/21 16:27:18
|
#52001/6/6 14:38:47
我是这样做的: 先定义一个位图做笔刷,在mouse按下时打开其尾迹属性并使其随mouse移动,抬起时,关闭尾迹属性并一次copy图象。在mouse移动时,根据移动的位置以及笔刷的大小计算中间需要画点的步长。配以适当的笔刷及相应的随即处理甚至可以画出平滑的蜡笔效果。 希望对你有帮助。
|
rainy_5d
职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
|
#62001/6/7 9:33:39
To 愁眉不展兄: 能给出代码吗?若不方便,请发至littlerainy@netease.com
谢谢。
|
dexn
职务:普通成员
等级:1
金币:1.0
发贴:157
注册:2000/12/7 21:54:20
|
#72001/6/7 13:10:25
如果用什么方法,好象只要驱动事件是exitframe类的,都会造成不画圆时出现跟不上鼠标的问题,因为记录是没帧记录一次鼠标位置,速度上受到的限制是无发弥补的。idle可能是个好方法,可以设置调用时间劲可能小,但是我没做过,不知道可不可以。
|
改将
职务:普通成员
等级:1
金币:0.0
发贴:102
注册:2006/2/11 1:14:46
|
#82001/6/7 14:42:40
不知道大家看了那个director自带的paintbox行为了没有!因为实在是比较的长。我只是粗看了以下,用到了很多很好的方法。具体是怎样。大家可以自己去看一下! 可以自己随便画一个paint的方框作为底版。将canvas行为附在上面,简单的设置行为属性后就可以画了。 强烈推荐。强烈推荐。强烈推荐。强烈推荐。强烈推荐。强烈推荐。强烈推荐
|