Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#3

AW: canvas wird überschrieben

  Alt 18. Apr 2013, 03:06
Wenn ich nun ein zweites Formular(fenster) in der Anwendung aufrufe werden die gezeichneten Linien mit dem Fenster wegradiert ...
nicht so schön ... wie kann ich das unterbinden mit Lock und unlock oder sowas?? hab da noch keine Lösung ...
Spendiere deiner Zeichenmethode eine eigene private Procedure:
Delphi-Quellcode:
procedure TForm1.Zeichnen;
begin
     Form1.Canvas.MoveTo(10,500);
     Form1.Canvas.LineTo(300,500);
end;
Rufe in OnPaint deines Formulars diese Methode auf:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
     Zeichnen;
end;
Begründung: Der ursprünglichen OnPaint-Methode deiner Formular-Instanz ist die Methode Zeichnen nicht bekannt, weshalb beim Repaint deines Formulars auch nur das wiederhergestellt wird, was eigentlich zum Formular gehört. Mit dem zusätzlichen Code in OnPaint erweiterst du praktisch die On-Paint-Methode deines Formulars, so daß bei einem Neuzeichnen des Formulars auch deine Linien wieder gezeichnet werden.

Geändert von Perlsau (18. Apr 2013 um 03:10 Uhr) Grund: Technische Grundlagen ergänzt
  Mit Zitat antworten Zitat