canvas.polygon in TPaintbox [gelöst]

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1641
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

canvas.polygon in TPaintbox [gelöst]

Beitrag von corpsman »

Servus,

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;
 
[Edit]
Lazarus SVN version 43674
OS Kubuntu
FPC 2.6.2-5
Dateianhänge
bug.zip
source
(2.25 KiB) 98-mal heruntergeladen
Zuletzt geändert von corpsman am Mi 8. Jan 2014, 21:20, insgesamt 1-mal geändert.
--
Just try it

wp_xyz
Beiträge: 5249
Registriert: Fr 8. Apr 2011, 09:01

Re: canvas.polygon in TPaintbox

Beitrag von wp_xyz »

Tasächlich. Während unter Windows alles normal ist, springt unter Ubuntu das Dreieck mit jedem Invalidate weiter in die Ecke. Der Versatz je Invalidate entspricht den Left/Top-Koordinaten der Paintbox.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1641
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: canvas.polygon in TPaintbox [gelöst]

Beitrag von corpsman »

Danke, mal schaun was draus wird

Report
--
Just try it

Antworten