Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Paintbox will nicht geleert werden (https://www.delphipraxis.net/123521-paintbox-will-nicht-geleert-werden.html)

peter001 3. Nov 2008 18:56


Paintbox will nicht geleert werden
 
Hi

Als Nachtrag zu diesem Thread: http://www.delphipraxis.net/internal...aintbox+leeren

Habe ich versucht die dort beschriebene lösung von Paintbox1.Refresh; und Paintbox1.Repaint; sowie beide Funktionen jeweils auf Paintbox1.Canvas anzuwenden, aber nichts zeigt wirkung, die paintbox wird trotzdem unverändert weiter bemalt.

Ein Übermalen mit einem gleichgroßen Quadrat kommt nicht in Frage, da die PB Bildschirmgröße hat, und dieser Vorgang zu einem Flackern führen würde. Die PB ist daher transparent, der BG kommt durch ein dahinter liegendes Objekt zustande.

Würde mich über Hilfe freuen!

Uwe Raabe 3. Nov 2008 20:29

Re: Paintbox will nicht geleert werden
 
Ich hoffe, ich verstehe dich richtig: Der Hintergrund der Paintbox soll durch ein dahinterliegendes Objekt realisiert werden, aber in deiner Paintbox tauchen noch andere Elemente auf, die da nicht hingehören?

Dann solltes du zunächst den Hintergrund nach vorn bringen (Formular-Designer - Kontext-Menü - Element - Nach vorne setzen) und danach das gleiche mit der Paintbox tun. Damit läßt du alle anderen Elemente zeitlich vor dem Background zeichnen und die Paintbox als letztes.

peter001 3. Nov 2008 21:30

Re: Paintbox will nicht geleert werden
 
nein fast.

ich hab sowas wie uhrzeiger, die auf der paintbox gemalt werden. jede sekunde werden die also versetzt auf die PB gemalt.
Würde ich vor jedem rendervorgang der zeiger den hintergrund mit malen, würde jede sekunde ein flackern kommen. daher male ich auf der Paintbox nur die zeiger, der hintergrund nimmt die farbe an, die eben das form dahinter hat.

ich hoffe das ist nun deutlicher.

sx2008 3. Nov 2008 23:03

Re: Paintbox will nicht geleert werden
 
Bei einer Paintbox musst du grundsätzlich alles selbst malen.
In deinem Fall heisst das, dass du zuerst ein Bitmap auf den Paintbox-Canvas kopierst
und dann deine Zeiger drübermalst.
Anstelle des Bitmaps kannst du den Hintergrund auch mit DrawRect setzen (Brush vorher entsprechend setzen)
aber ein Bitmap gibt optisch mehr her.
Oder dem Brush.Bitmap ein Objekt zuweissen, dann wird das Bitmap "gekachelt".

Sollte ein Flackern auftreten, kann man die gesamte Ausgabe in ein temporäres Bitmap zeichnen und dieses
Bitmap in einem Rutsch auf den Paintbox-Canvas kopieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:04 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