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;

转载于:https://www.cnblogs.com/xxmcu/archive/2011/04/12/2013687.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值