2010-06-26 79 views
4

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

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

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

谢谢

回答

0

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

+0

当然,Canvas.Polyline只是简单地调用Windows.Polyline:'Windows.Polyline(FHandle,PPoints(@Points)^,High(Points)+ 1);'(和通常的'改变'的东西。)参见http:// msdn .microsoft.com/EN-US /库/ dd162815(VS.85)的.aspx – 2010-06-26 12:34:57

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; 
相关问题