老实说,我是实现了这两个功能,但第一个中"结合处能形成尖角"只有在对绘制不进行裁减的情况下才能保证,默认为了提高效率我是裁剪绘制的,所以不能保证"结合处能形成尖角".
我相信有很多种做法,我所见到的就有两种,一个是一家叫"OILTECH"的公司,我估计他的方法和我不一样,另一个是陈建春的一本矢量图的书,做法也和我不一样.我没有仔细看陈建春的方法,因为我觉得他的整个框架都不够OO。我的方法也不比上面的好,至少在我看来效率不够高,且效果也不是很理想(画组合线时时常有一个象素的误差无法消除)。
对于自定义线形,其实只需要思考一个问题:比如WINDOWS默认的线形,为什么在绘制第一条线段后,绘制第二条线段时,他的点划是连续的,没有从第二条线段重新开始。它一定是在MOVETO中初始了某些变量并在每一次LINETO中都可以使用和修改这些变量,比如上一条线段绘制完成时,线型的偏移值,以及目前正要绘制的线段和上一条线段的夹角(用来做连接类型JOIN)等等。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3214732
是我在解决这个问题的问的一个问题,或许对你有帮助