我想繪製一個使用GDI的多邊形。此代碼的工作:動態數組與靜態數組有什麼不同?
type
TPolygon: Array[0..2] of TPoint;
var
ACanvas: TGPGraphics;
MyBrush: TGPLinearGradientBrush;
...
procedure DrawPolygon;
var
Polygon: TPolygon;
begin
Polygon[0].X := 1;
Polygon[0].Y := 5;
Polygon[1].X := 10;
Polygon[1].Y := 15;
Polygon[2].X := 1;
Polygon[2].Y := 5;
ACanvas.FillPolygon(MyBrush, PGPPoint(@Polygon), length(Polygon));
end;
...
此代碼生成一個GDI值上溢出錯誤:
type
TPolygon: Array of TPoint;
var
ACanvas: TGPGraphics;
MyBrush: TGPLinearGradientBrush;
...
procedure DrawPolygon;
var
Polygon: TPolygon;
begin
SetLength(Polygon, 3);
Polygon[0].X := 1;
Polygon[0].Y := 5;
Polygon[1].X := 10;
Polygon[1].Y := 15;
Polygon[2].X := 1;
Polygon[2].Y := 5;
ACanvas.FillPolygon(MyBrush, PGPPoint(@Polygon), length(Polygon));
end;
...
的唯一區別是一個點陣列是動態的,另一種是靜態的。顯然,潛在的內存價值是不同的,但以什麼方式?
謝謝安德烈亞斯。我的帖子沒有說Canvas是TCanvas。它實際上是TGPGraphics。我會編輯這個問題,使其更加清晰。 – norgepaul
@norgepaul:我明白了。那麼,答案几乎是一樣的,但。但是,在這種情況下,你確實需要至少三個頂點? –
從技術上講,多邊形確實需要被封閉。但是,在這種情況下,2點只是畫出一條直線。我看到你的觀點,然而我已經更新了這個問題:) – norgepaul