我正在TImage画布上绘制虚线,发现破折号的大小远远超出了绘图区域。有没有办法改变在画布上绘制的虚线的破折号大小呢?
这是我所做的为了能够绘制虚线。
Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);
我没有找到任何可以更改虚线大小/长度的Pen属性。谢谢。
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;
我不知道Polyline()的实现是什么?当你按住control键并单击它时,你看到的是哪些代码?它是否使用了一个公开的属性变量?如果是这样,你可以设置它,否则-如果它是硬编码的-你将看到它,并知道你不能。
Windows.Polyline(FHandle, PPoints(@Points)^, High(Points) + 1);
(还有通常的changing
等等)。请参见 http://msdn.microsoft.com/en-us/library/dd162815(VS.85).aspx。 - Andreas Rejbrand