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;
...
유일한 차이점은 하나 개의 포인트 어레이 동적 있다는을 다른 정적이다. 분명히 기본 메모리 값은 다르지만 어떤 방식으로?
감사합니다. Andreas. 내 게시물에 Canvas가 TCanvas라고 나와 있지 않습니다. 실제로 TGP 그래픽입니다. 더 명확하게 질문을 편집하겠습니다. – norgepaul
@norgepaul : 알겠습니다. 글쎄, 그 대답은 거의 똑같습니다. 하지만이 경우에도 적어도 세 개의 정점이 필요합니까? –
기술적으로, 폴리곤을 동봉해야합니다. 그러나이 경우 2 점은 직선을 그립니다. 그러나 귀하의 요점을보고 나는 질문을 업데이 트했습니다 : – norgepaul