【求助】虚线[宽画笔]画椭圆的算法!
RT,用宽画笔(画笔宽度大于1),画虚线(包括破折线、点划线等等),请教一个比较实用的算法。
P.S.宽画笔实线的椭圆、细画笔虚线的椭圆,都比较好实现,就是宽画笔虚线的椭圆没有想到好方法。
问题点数:50、回复次数:13Top
1 楼dongpy(51-->ARM)回复于 2006-03-16 16:30:24 得分 0
有没有人啊?
如何画带线宽的虚线椭圆?
大家帮帮忙啊~~~Top
2 楼dongpy(51-->ARM)回复于 2006-03-16 19:50:28 得分 0
有人吗? Up~Top
3 楼dongpy(51-->ARM)回复于 2006-03-21 12:40:49 得分 0
没人回答,请求斑竹强制结帖!Top
4 楼canybox(一生只愿,爱你一人)回复于 2006-03-21 16:47:34 得分 0
MFC里有point函数啊,直接在一个输出变量里写因变量就可以了
如:
y=x*x+x+3
就可以了Top
5 楼dongpy(51-->ARM)回复于 2006-03-31 12:25:39 得分 0
晕~,嵌入式平台,没有MFC。
要从画点做起~Top
6 楼Kvci(看了不笑就没小JJ同时又比较长的昵称__——————————————————————————————)回复于 2006-03-31 16:00:34 得分 0
自己画啊
先实现宽实线画椭圆
宽实线其实就是几个差不多的细实现
比如直径为8,线宽为5的实线圆
就可以看成是直径分别10、9、8、7、6五个细线圆
再虚线Top
7 楼dongpy(51-->ARM)回复于 2006-04-01 11:28:52 得分 0
宽实线没有问题。
关键是宽虚线如何实现?Top
8 楼big_jin2001()回复于 2006-04-11 16:30:19 得分 0
我写过画铁路线的程序,也能解决你这个问题!Top
9 楼zzwu(未名)回复于 2006-04-11 16:55:28 得分 0
不知道你是要用什么现成的语句来实现?
还是完全自己用一个象素一个像素地产生?
Top
10 楼zzwu(未名)回复于 2006-04-11 17:18:41 得分 0
在delphi(Borland pascal)和BCB(Borland C)中都用:
SetLineStyle(LineStyle: Word; Pattern: Word; Thickness: Word);
来设置线的形式,
其中LineStyle的值取
0,1,2,3,4
时分别设置线为
实线、点线、短划线、点划线和用户用Pattern定义的线
而Thickness代表线宽。
设置好线的形式后,再用
moveto(x1,y1),lineto(x2,y2)
ellipse(x1,y1,x2,y2)
来画直线或园(或椭圆),它们就是你要的图形了。
Top
11 楼zzwu(未名)回复于 2006-04-11 17:27:31 得分 30
完全自己用一个象素一个像素地产生就比较繁,
通常采用bresenham算法来画线和园(椭圆),
但为了画好每一段粗短线,你要把它作为一个
有旋转角度的填充矩形来对待。
Top
12 楼navi_dx()回复于 2006-04-11 18:57:06 得分 20
一般的画宽线的算法是转换为填充矩形(包括 Win32 GDI),但是效率不高,如果只是画宽线可以修改bresenham算法,使其支持宽图元,唯一的问题就是Cap要画得好看不太容易,我自己做过一个画宽线算法比GDI效率高25%左右,画宽虚线就比较麻烦了,暂时没有很高效的实现办法。有谁高效实现过请共享一下Top
13 楼dongpy(51-->ARM)回复于 2006-04-13 11:27:13 得分 0
实线宽画笔的椭圆是通过填充内圈、外圈的扫描点实现的。
虚线宽画笔的椭圆肯定不能这样做了。。。。。。
到现在也没想出个易实现又高效的算法来。Top




