Kann bitte jemand den Bug bestätigen, dann reporte ich es.
Worum es geht.
Wenn ich auf einer TPaintbox mittels canvas.polygon etwas male, werden alle Koordinaten danach mit dem Offset 8 versehen. Laut dem Debugger wird tatsächlich der Speicher von "Pol" geändert. Wenn ich form1.canvas.polygon nehme geschieht das nicht.
Code: Alles auswählen
Var
Form1: TForm1;
pol: Array Of TPoint;
Implementation
{$R *.lfm}
{ TForm1 }
Procedure TForm1.FormCreate(Sender: TObject);
Begin
setlength(pol, 3);
Button1.Click();
End;
Procedure TForm1.FormDestroy(Sender: TObject);
Begin
setlength(pol, 0);
End;
Procedure TForm1.FormPaint(Sender: TObject);
Begin
paintbox1.canvas.Brush.Color := clwhite;
paintbox1.canvas.Brush.Style := bsSolid;
paintbox1.canvas.pen.Color := clwhite;
paintbox1.canvas.Polygon(pol); // Hier wird der Speicher verändert
(*
canvas.Brush.Color := clwhite;
canvas.Brush.Style := bsSolid;
canvas.pen.Color := clwhite;
canvas.Polygon(pol); // Hier wird der Speicher nicht verändert
*)
End;
Procedure TForm1.Button1Click(Sender: TObject);
Begin
pol[0] := point(100, 100);
pol[1] := point(100, 200);
pol[2] := point(200, 200);
End;
Procedure TForm1.Button2Click(Sender: TObject);
Begin
paintbox1.Invalidate;
End;
Lazarus SVN version 43674
OS Kubuntu
FPC 2.6.2-5