【问题标题】:Is it possible to change the size of a dash of a line?是否可以更改虚线的大小?
【发布时间】:2010-06-26 21:38:24
【问题描述】:

我在 TImage 画布上画了一条虚线,发现虚线的大小对于绘图区域来说太大了。有没有办法改变画布上绘制的虚线的大小?
这就是我能够绘制虚线的方法。

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

我没有找到任何可以改变破折号大小/长度的 Pen 属性。

谢谢

【问题讨论】:

    标签: delphi canvas polyline


    【解决方案1】:

    根据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, 14, 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;
    

    【讨论】:

      【解决方案2】:

      我不知道,但是,Polyline() 的实现是什么?当您控制+单击它时,您会看到哪个代码?是不是使用了一个属性暴露的变量可能?如果是这样,你可以设置它,否则 - 如果它是硬编码的 - 你会看到它,并且知道你不能。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2016-06-09
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2013-04-23
      相关资源
      最近更新 更多