Delphi32.com - Home!
| Home/News | Downloads | Forums | D32 Magazine | Resources | Info and Facts |  
 
 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.

     



  << Previous Faq     Complete List     Next Faq >>  



 
 Hits/month  2,500,000+ 
 Downloads
 (Since May 2000)
 7,393,709 
 Total Files  6,023 
 Forum msgs  7,670 
 Articles/FAQs  70+/900+ 
Kylix
Tips n Tricks
FAQs
Knowledge Base
Bug Listings
Articles
Books
Newsgroups
Links
Submissions
Testimonials
Advertising
Contact Us
About Us
Search Amazon:
Top Selling Software at Amazon

| Home/News | Downloads | Forums | Resources | Info and Facts | Testimonials |
  Site Search:
 


Comments/Problems: Webmaster@delphi32.com
Copyright © 1998-2006, Delphi32.com. All rights reserved.
Terms of Use