Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mit Canvas gezeichnete Objekte verschwinden (https://www.delphipraxis.net/47813-mit-canvas-gezeichnete-objekte-verschwinden.html)

tgoessi 16. Jun 2005 16:42


Mit Canvas gezeichnete Objekte verschwinden
 
Hallo

Wenn ich mit der Funktion Canvas etwas zeichne, z.B.
in einem Formular:

Delphi-Quellcode:
  Canvas.Brush.Color := clLime;
  Canvas.Pen.Color := clBlack;
  Canvas.Pen.Style := psSolid;
  Canvas.Pen.Width := 1;
  Canvas.Chord(0,0,100,100,10,40,90,40);
wird die Grafik zwar gezeichnet.
Wenn aber das Fenster von einem anderen zugedeckt, dann wieder neu aktiviert wird, erscheint die Grafik nicht mehr.
Müssen solche grafiken bei jedem OnRepain bzw. OnFocus wieder neu erstellt werden?

Gruss
Tom

Luckie 16. Jun 2005 16:44

Re: Mit Canvas gezeichnete Objekte verschwinden
 
Canvas ist keine Funktion, sondern eine Eigenschaft - in diesem Fall von deinem Formular.

http://www.luckie-online.de/develope...tioniert.shtml
(Am Ende ist ein Beispiel, wie man so was normalerweise löst.)

alcaeus 16. Jun 2005 16:45

Re: Mit Canvas gezeichnete Objekte verschwinden
 
Hallo Tom,

Zitat:

Zitat von tgoessi
Wenn aber das Fenster von einem anderen zugedeckt, dann wieder neu aktiviert wird, erscheint die Grafik nicht mehr.
Müssen solche grafiken bei jedem OnRepain bzw. OnFocus wieder neu erstellt werden?

genau so ist es. Wenn du die Delphi-Referenz durchsuchenTPaintBox verwendest, wird das OnPaint-Ereignis gefeuert. Diese Komponente ist genau fuer diesen Zweck geschrieben worden, notfalls kann man aber auch auf dem Canvas des Forms zeichnen.
Weiters empfiehlt es sich in solchen Fallen, einmal auf ein Offscreen-Bitmap zu zeichnen, und dieses anschliessend auf den Canvas der PaintBox oder des Forms rueberzukopieren. So sparst du dir das andauernde manuelle Zeichnen des Inhalts.

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz