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

时间:2010-06-26 11:19:14

标签: delphi canvas polyline

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

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

我没有找到任何可以改变短划线尺寸/长度的Pen属性。

由于

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:0)

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