Ho un numero variabile di punti su una tela. A volte le altre quattro volte 3 punti, o 6. Esiste una funzione che può dipingere l'area all'interno?Delphi image canvas ... dipingi un'area (triangolo, rettangolo, poligono)
Grazie per il vostro aiuto.
Ho un numero variabile di punti su una tela. A volte le altre quattro volte 3 punti, o 6. Esiste una funzione che può dipingere l'area all'interno?Delphi image canvas ... dipingi un'area (triangolo, rettangolo, poligono)
Grazie per il vostro aiuto.
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:
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.
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.
Sarei felice se questa risposta fosse accettata. Essere i primi non è la cosa più importante. Essere migliori è! –
Vorrei poter accettare tutti e 3. Hai aiutato tutti. Grazie. –