Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Löschen einer Paintbox verhindern (https://www.delphipraxis.net/99755-loeschen-einer-paintbox-verhindern.html)

little_budda 17. Sep 2007 12:50


Löschen einer Paintbox verhindern
 
Hallo,

ich stelle Phasenverläufe und Drehfelder grafisch dar.
Dazu zeichne ich meine Daten auf den Canvas zweier Paintboxen.
Klappt soweit auch gut.

Wenn ich meine Anwendung vom primären Monitor auf meinen zweiten Monitor verschiebe
werden die erzeugten Grafiken gelöscht.

Kann ich eine Paintbox "einfrieren" nachdem ich die Grafik erzeugt habe?

Für eine Idee wär ich dankbar.

Gruß Holger.

:gruebel:

Matze 17. Sep 2007 12:57

Re: Löschen einer Paintbox verhindern
 
Hallo,

du könntest im OnPaint-Ereignis deine Zeichenoperationen durchführen.

Luckie 17. Sep 2007 12:59

Re: Löschen einer Paintbox verhindern
 
Effektiver ist es auf ein Bitmap im Speicher zu zeichnen und es bei Bedarf auf den Canvas der Paintbox zu kopieren.

little_budda 17. Sep 2007 13:00

Re: Löschen einer Paintbox verhindern
 
Ich nutze den Canvas weil ich die erzeugten Grafiken parralel auch als Bitmap (Datei) ablege.

shmia 17. Sep 2007 13:01

Re: Löschen einer Paintbox verhindern
 
Zitat:

Zitat von Matze
du könntest im OnPaint-Ereignis deine Zeichenoperationen durchführen.

Du musst im OnPaint-Ereignis deine Zeichenoperationen durchführen.
Das Zeichnen auf den Canvas einer Paintbox ausserhalb des OnPaint-Ereignis wäre ein Fehler.
Falls das Zeichen viel Zeit kostet, ist die Paintbox nicht das richtige Control.
Dann sollte man ein TImage verwenden.

little_budda 17. Sep 2007 13:05

Re: Löschen einer Paintbox verhindern
 
Der umgekehrte Weg?
Erst das Bitmap erzeugen und danach die Paintbox füllen?
Ist das nicht dasselbe wie direkt in die Paintbox zu zeichnen?

Ich werde es versuchen.

little_budda 17. Sep 2007 13:06

Re: Löschen einer Paintbox verhindern
 
Wenn ich sowiso vorher das Bitmap erzeuge kann ich auch eine Timage Komponente verwenden ...

[Schreibfehler]

Matze 17. Sep 2007 13:08

Re: Löschen einer Paintbox verhindern
 
Zitat:

Zitat von little_budda
Erst das Bitmap erzeugen und danach die Paintbox füllen?
Ist das nicht dasselbe wie direkt in die Paintbox zu zeichnen?

Es ist schneller, zuerst auf ein internes Bitmap zu zeichnen und dieses mittels Delphi-Referenz durchsuchenbitblt auf der PaintBox auszugeben als direkt mit dem Canvas der PaintBox zu arbeiten.

little_budda 17. Sep 2007 13:16

Re: Löschen einer Paintbox verhindern
 
Hab schon in der Hilfe nachgesehen, aber was bitte ist "bitblt" ?

Matze 17. Sep 2007 13:24

Re: Löschen einer Paintbox verhindern
 
MSDN-Library durchsuchenBitBlt, deklariert in der Unit Windows. Ein Aufruf könnte so aussehen:

Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  BitBlt(PaintBox.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;
Natürlich könntest du auch Canvas.Draw nutzen, nur ist dies meines Wissens etwas langsamer, bin mir aber nicht sicher.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.
Seite 1 von 2  1 2      

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