Question and Answer Database FAQ919D.txt How can I create a dynamic array of TPoints to draw a polygon? Category :Object Pascal Platform :All Product :All 32 bit Question: How can I create a dynamic array of TPoints to draw a polygon? Answer: 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 -1) do begin p^[i].x := Random(Form1.Width); p^[i].y := Random(Form1.Height); end; Polygon(Canvas.Handle, p, NumPoints); FreeMem(p, sizeof(TPoint) * NumPoints); {$IFDEF CKRANGE} {$UNDEF CKRANGE} {$R+} {$ENDIF} end; procedure TForm1.Button1Click(Sender: TObject); begin Form1.Canvas.Brush.Color := clWhite; Form1.Canvas.FillRect(Rect(0, 0, Form1.Width, Form1.Height)); Form1.Canvas.Brush.Color := clRed; DrawDynamicPolyArray(SpinEdit1.Value, Form1.Canvas); end; procedure TForm1.FormCreate(Sender: TObject); begin SpinEdit1.MinValue := 2; SpinEdit1.MaxValue := 1000; SpinEdit1.Value := 100; end; end. 7/16/98 4:31:28 PM
Last Modified: 01-SEP-99