Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Wann wird onpaint ereignis Ausgelöst? (https://www.delphipraxis.net/53422-wann-wird-onpaint-ereignis-ausgeloest.html)

ferby 16. Sep 2005 06:10


Wann wird onpaint ereignis Ausgelöst?
 
Hallo,

Ich habe bei mir im Onpaint Ereignis diesen code stehen:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var
i:byte;
begin
  for i:=15 downto 1 do paintbox1.canvas.Ellipse(165-10*i,190-10*i,155+10*i,180+10*i);
end;
Es werden jetzt ständig die Kreise gezeichnet. Meine Frage ist jetzt, wann wird das onpaint ereignis ausgelöst???

Ferby

Sanchez 16. Sep 2005 06:34

Re: Wann wird onpaint ereignis Ausgelöst?
 
Die Onlinehilfe meint dazu:
Zitat:

Zitat von OH
Das Ereignis OnPaint wird beim Neuzeichnen des Formulars ausgelöst.

Delphi-Syntax:

property OnPaint: TNotifyEvent;

C++ Syntax:

__property Classes::TNotifyEvent OnPaint = {read=FOnPaint, write=FOnPaint, stored=IsForm};

Beschreibung

Mit OnPaint können Sie bestimmte Verarbeitungen durchführen, wenn die Anzeige des Formulars aktualisiert wird. Alle speziellen Zeichenoperationen mit dem Formular sollten hier ausgeführt werden. OnPaint wird ausgelöst, bevor die Steuerelemente des Formulars angezeigt werden.

Welche Teile der Zeichenfläche des Formulars neu gezeichnet werden müssen, können Sie mit der Eigenschaft ClipRect der Zeichenfläche ermitteln.

Verwenden Sie die Eigenschaft Canvas des Formulars außerhalb der Ereignisbehandlungsroutine für OnPaint, wird die Zeichenfläche beim nächsten OnPaint-Ereignis gelöscht und überschrieben.

Also immer wieder, wenn das Fenster sichtbar ist, oder Invalidate aufgerufen wird, ...

Robert Marquardt 16. Sep 2005 09:34

Re: Wann wird onpaint ereignis Ausgelöst?
 
Im FormPaint auf die PaintBox zu malen ist falsch. Man malt im OnPaint der PaintBox.

ferby 16. Sep 2005 15:49

Re: Wann wird onpaint ereignis Ausgelöst?
 
Zitat:

Im FormPaint auf die PaintBox zu malen ist falsch. Man malt im OnPaint der PaintBox.
Hallo,

Wo ist da der Unterschied, funktionieren tut beides?

Ferby

SMO 16. Sep 2005 17:30

Re: Wann wird onpaint ereignis Ausgelöst?
 
Der Unterschied besteht darin, dass Form.OnPaint aufgerufen wird, wenn ein Teil der Form neu gezeichnet werden muss, und PaintBox.OnPaint, wenn ein Teil der PaintBox neu gezeichnet werden muss. Wenn die PaintBox die ganze Form bedeckt mag da kein Unterschied sein, im Normalfall allerdings schon.

Stell dir mal vor, du hast eine PaintBox auf einer Form platziert, die nur die linke, obere Ecke bedeckt. Nun bewegst du ein anderes Fenster über die rechte untere Ecke deiner Anwendung. Das hat zur Folge, dass Form.OnPaint aufgerufen wird, denn ein Teil der Form wurde vom anderen Fenster übermalt und muss jetzt wiederhergestellt werden. Wenn du dort nun den Inhalt der PaintBox neu zeichnest, ist das überflüssig und Verschwendung von Ressourcen/Rechenzeit, denn die PaintBox wurde ja gar nicht vom anderen Fenster übermalt und muss deswegen auch nicht aufgefrischt werden.

ferby 16. Sep 2005 18:16

Re: Wann wird onpaint ereignis Ausgelöst?
 
Hallo,

danke, das ergiebt Sinn!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.

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