加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 是否可以改变一条线的大小?

发布时间:2020-12-15 09:23:59 所属栏目:大数据 来源:网络整理
导读:我在T Image Canvas上绘制了一条虚线,发现破折号的大小对于绘图区来说太大了.有没有办法改变画布上画线的破折号? 这就是我能够绘制虚线的方法. Canvas.Pen.Style := psDash;Canvas.Polyline(myPoints); 我没有找到任何可以改变破折号尺寸/长度的Pen属性. 谢
我在T Image Canvas上绘制了一条虚线,发现破折号的大小对于绘图区来说太大了.有没有办法改变画布上画线的破折号?
这就是我能够绘制虚线的方法.

Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);

我没有找到任何可以改变破折号尺寸/长度的Pen属性.

谢谢

解决方法

根据 http://docwiki.embarcadero.com/VCL/e/index.php/Graphics.TPenStyle,您可以使用psUserStyle

ExtCreatePen的文档是http://msdn.microsoft.com/en-us/library/dd162705(VS.85).aspx

以下是我对ExtCreatePen如何与TPen结合使用的解释:

const
  NumberOfSections = 8;
  LineLengths: array[0..NumberOfSections-1] of DWORD =
    (20,15,14,17,8,16,9);
var
  logBrush: TLogBrush;
begin

  logBrush.lbStyle := BS_SOLID;
  logBrush.lbColor := DIB_RGB_COLORS;
  logBrush.lbHatch := HS_BDIAGONAL; // ignored

  Canvas.Pen.Handle := ExtCreatePen(PS_GEOMETRIC or PS_USERSTYLE or PS_ENDCAP_ROUND or PS_JOIN_BEVEL,4,logBrush,NumberOfSections,@LineLengths[0]);
  // now Canvas.Pen.Style = psUserStyle

  Canvas.Polyline([Point(0,0),Point(100,100),Point(200,100)]);

end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读