2012-04-03 9 views

risposta

15

Utilizzare la funzione TCanvas.Polygon. Dichiarare un array di TPoint, impostarne la lunghezza sul conteggio dei punti, specificare le coordinate di ciascun punto (eventualmente modificare la penna e/o il pennello) e passare questo array alla funzione TCanvas.Polygon. Come in questo esempio mi annoia:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Points: array of TPoint; 
begin 
    SetLength(Points, 3); 
    Points[0] := Point(5, 5); 
    Points[1] := Point(55, 5); 
    Points[2] := Point(30, 30); 
    Canvas.Pen.Width := 2; 
    Canvas.Pen.Color := clRed; 
    Canvas.Brush.Color := clYellow; 
    Canvas.Polygon(Points); 
end; 

Ecco come si presenta come:

enter image description here

11

Come complemento alla risposta eccellente di TLama, questo è un caso in cui è possibile ottenere la sintassi abbastanza conveniente utilizzando il aperta costruzione di array. Considerare la funzione di supporto

procedure DrawPolygon(Canvas: TCanvas; const Points: array of integer); 
var 
    arr: array of TPoint; 
    i: Integer; 
begin 
    SetLength(arr, Length(Points) div 2); 
    for i := 0 to High(arr) do 
    arr[i] := Point(Points[2*i], Points[2*i+1]); 
    Canvas.Polygon(arr); 
end; 

definito e implementato una volta per tutte. Ora puoi fare semplicemente

Canvas.Pen.Width := 2; 
Canvas.Pen.Color := clRed; 
Canvas.Brush.Color := clYellow; 
DrawPolygon(Canvas, [5, 5, 55, 5, 30, 30]); 

per disegnare la stessa figura dell'esempio di TLama.

+0

Sarei felice se questa risposta fosse accettata. Essere i primi non è la cosa più importante. Essere migliori è! –

+4

Vorrei poter accettare tutti e 3. Hai aiutato tutti. Grazie. –

10

Come complemento sia per la risposta di TLama e Andreas, ecco un'altra alternativa:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Canvas.Pen.Color := clRed; 
    Canvas.Brush.Color := clYellow; 
    Self.Canvas.Polygon([Point(5,5), Point(55,5), Point(30,30)]); 
end; 

Utilizzando open array costruire e registrare Point.

Problemi correlati