| |
| How can I create a dynamic array of TPoints to draw a polygon? |
 |
How can I create a dynamic array of TPoints to draw a polygon?
The easist way is to declare a type of array that has only one element, turn range checking off, access the array through the use of a variable, and call the Windows API function Polygon().
Example:
type
TPtArray = array[0..0] of TPoint;
PPtArray = ^TPtArray;
procedure DrawDynamicPolyArray(NumPoints : integer;
Canvas : TCanvas);
var
p : PPtArray;
i : integer;
begin
{$IFOPT R+}
{$DEFINE CKRANGE}
{$R-}
{$ENDIF}
GetMem(p, sizeof(TPoint) * NumPoints);
Randomize;
for i := 0 to (NumPoints - ) do begin
p^[i].x := Random(Form .Width);
p^[i].y := Random(Form .Height);
end;
Polygon(Canvas.Handle, p, NumPoints);
FreeMem(p, sizeof(TPoint) * NumPoints);
{$IFDEF CKRANGE}
{$UNDEF CKRANGE}
{$R+}
{$ENDIF}
end;
procedure TForm .Button Click(Sender: TObject);
begin
Form .Canvas.Brush.Color := clWhite;
Form .Canvas.FillRect(Rect(0, 0, Form .Width, Form .Height));
Form .Canvas.Brush.Color := clRed;
DrawDynamicPolyArray(SpinEdit .Value,
Form .Canvas);
end;
procedure TForm .FormCreate(Sender: TObject);
begin
SpinEdit .MinValue := 2;
SpinEdit .MaxValue := 000;
SpinEdit .Value := 00;
end;end.
|
|
| Hits/month |
2,500,000+ |
Downloads (Since May 2000) |
7,393,709 |
| Total Files |
6,023 |
| Forum msgs |
7,670 |
| Articles/FAQs |
70+/900+ |
Top Selling Software at Amazon
|