矢量图绘制(贝塞尔曲线与直线的连接画法及自定义画笔形状)(300分)

  • 主题发起人 主题发起人 haili
  • 开始时间 开始时间
H

haili

Unregistered / Unconfirmed
GUEST, unregistred user!
1、如何实现贝塞尔曲线与直线的完美结合,结合处能形成尖角,效果就像一条折线或多段线的交点处一样。(150分)
2、如何实现画笔的自定义。比如画铁路、城墙等。(150分)
 
这种技术有商业价值,所以一般是要掏钱买的。
 
wk_knife前辈有做过这方面的吗?可以提供点思路吗?
 
老实说,我是实现了这两个功能,但第一个中"结合处能形成尖角"只有在对绘制不进行裁减的情况下才能保证,默认为了提高效率我是裁剪绘制的,所以不能保证"结合处能形成尖角".

我相信有很多种做法,我所见到的就有两种,一个是一家叫"OILTECH"的公司,我估计他的方法和我不一样,另一个是陈建春的一本矢量图的书,做法也和我不一样.我没有仔细看陈建春的方法,因为我觉得他的整个框架都不够OO。我的方法也不比上面的好,至少在我看来效率不够高,且效果也不是很理想(画组合线时时常有一个象素的误差无法消除)。

对于自定义线形,其实只需要思考一个问题:比如WINDOWS默认的线形,为什么在绘制第一条线段后,绘制第二条线段时,他的点划是连续的,没有从第二条线段重新开始。它一定是在MOVETO中初始了某些变量并在每一次LINETO中都可以使用和修改这些变量,比如上一条线段绘制完成时,线型的偏移值,以及目前正要绘制的线段和上一条线段的夹角(用来做连接类型JOIN)等等。

http://www.delphibbs.com/delphibbs/dispq.asp?lid=3214732
是我在解决这个问题的问的一个问题,或许对你有帮助
 
  我现在要实现的是在一个地图上标注大量的矢量组合图形,如果算法过于复杂,可能执行与刷新时屏幕会出现迟钝与闪烁。
  wk_knife前辈,我见你的自定义的画笔做的应该很完善了,可否给些代码?
 
如果你对线型的要求不高,也就是画铁路、城墙,比较有效率的画法可以用DDA法(就是用DDALINE)来画,我是用EMFFILE来画的。

我在《电脑编程技巧与维护》投了一篇自定义线型的稿子,编辑部说已经预排在第8期了。
 
后退
顶部