delphi 画粗虚线方法


1:宽度为1的虚线可以通过设置pen的style.如
image1.canvas.Pen.Width:=1;
image1.canvas.Pen.Style:=psDash;
image1.canvas.MoveTo(0,0);
image1.canvas.LineTo(100,100);
但当宽度大于1时,Dotted or dashed pen styles无效。不过你
可以一段一段的画来实现
2:这个答案其实我也想过,也这么实现过,但仍对wind_cloudy表示感谢
3:画多条虚线可能更好一些,如
image1.canvas.Pen.Width:=1;
image1.canvas.Pen.Style:=psDash;
for i:=0 to 5 do
begin
image1.canvas.MoveTo(i,0);
image1.canvas.LineTo(100 i,100);
end;
4:画宽度大于1的虚线是没有直接的方法的,看帮助 :
Note: Dotted or dashed pen styles are not available when the Width property is not 1.
但是你可以通过在同一位置稍微偏移的地方画2次来实现!
5:用OpenGL可以做到! 不过我想这可能已经偏离了你的原意。
有几个CAD软件可以做到,我估计是自己重定义的结果!
6:Try to use Canvas.Pixels[..];
7:自己写个函数,定好起点、终点、线段间的水平距离、垂直距离,
就可以画2个宽度以上的虚线了
8:这个:
function CreateMyPen(const Width:integer):HPEN;
var myStyle: DWORD;
myBrush: TLogBrush;
begin
PenStyle := PS_GEOMETRIC or PS_ENDCAP_FLAT or PS_JOIN_ROUND or PS_DOT;
with myBrush do
begin
lbStyle := BS_SOLID;
lbColor := GetColor;
lbHatch := HS_BDIAGONAL;
end;
result := ExtCreatePen(PenStyle, DWORD(3), PenBrush, 0, nil);
end;
////

canvas.pen := CreateMyPen(4)
canvas.MoveTo(10,10);
canvas.LineTo(100,100);
9:用Gdi 画
10:TRzLine可以实现你的效果 我刚刚用过这个控件
11:卷起千堆雪说的对

with Image1.Canvas do
begin
Pen.Style := psDash;
Moveto(10,10);
Lineto(100,100);
Moveto(10,11);
Lineto(100,101);
Moveto(10,12);
Lineto(100,102);
end;

posted on 2011-04-12 15:13  xxmcu  阅读(2509)  评论(0编辑  收藏  举报

导航