我在TImage Canvas上畫了一條虛線,發現破折號的大小對於繪圖區域來說太大了。有沒有辦法改變畫布上繪製的線條的大小?
這是我可以繪製虛線。是否可以更改一條線的大小?
Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);
而我沒有找到任何筆屬性,它可以改變破折號的大小/長度。
謝謝
我在TImage Canvas上畫了一條虛線,發現破折號的大小對於繪圖區域來說太大了。有沒有辦法改變畫布上繪製的線條的大小?
這是我可以繪製虛線。是否可以更改一條線的大小?
Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);
而我沒有找到任何筆屬性,它可以改變破折號的大小/長度。
謝謝
我不知道,但是,哪個是Polyline()的實現?當你控制+點擊它時,你看到了哪些代碼?它是否使用屬性暴露變量可能?如果是這樣,你可以設置它,否則 - 如果它是硬編碼的,你會看到它,並知道你不能。
根據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;
當然,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