Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Flackern trotz doubleBuffered:=true (https://www.delphipraxis.net/94896-flackern-trotz-doublebuffered-%3Dtrue.html)

Bbommel 27. Jun 2007 20:19


Flackern trotz doubleBuffered:=true
 
Hallo zusammen,

da ich langsam die Welt nicht mehr verstehe, keine Ideen mehr habe und mir auch keine schlauen Begriffe mehr einfallen, um Google zu füttern, hoffe ich mal hier auf Ideen. Vielleicht ist ja doch alles ganz einfach. :)

Ich zeichne mit einem TBitmap im Hintergrund ein Bild und will dies von Zeit zu Zeit auf einem TPaintBox-Objekt ausgeben - zum Beispiel wenn eine Scrollbar bewegt wird, um einen neuen Ausschnitt aus dem Bitmap anzuzeigen. Das ganze wird per Canvas.CopyRect realisiert. So weit, so klassisch.

Alles läuft ganz wunderbar, wenn die PaintBox unmittelbar in ein Form gesetzt wird. Im Form setze ich dann doubleBuffered:=true und kann fröhlich scrollen, ohne, dass irgendwas flackert.

Wenn ich das gleiche PaintBox-Objekt nun aber auf ein Panel setze oder noch schöner (was das eigentlich wichtige wäre) in ein Frame und dann erst das Frame in die Form einfüge, dann habe ich ein fröhliches geflacker beim Scrollen. Da kann ich die doubleBuffered-Eigenschaft vom Frame oder Panel setzen, wie ich will - das interessiert Delphi leider gar nicht.

Ideen? Ich hab keine mehr. :)

Der Vollständigkeit halber: Es geht um Delphi aus dem BDS2006. Läuft jetzt gerade unter Vista, was aber hoffentlich nicht den Fehler auslöst...?

Danke schon mal...

Bis denn
Bbommel

Bbommel 28. Jun 2007 16:15

Re: Flackern trotz doubleBuffered:=true
 
Moin,

mit einigem Ausprobieren bin ich eben selbst über die Lösung gestolpert: Der Schuldige war das XPManifest, welches ich in mein Programm eingebunden habe. Einige Komponenten werden dadurch wohl anders neugezeichnet, so dass ein DoubleBuffered:=true alleine keine Wirkung mehr hat. Bei der Komponente, auf der das PaintBox-Objekt liegt (in meinem Fall ist das immer ein Panel) muss die Eigenschaft PaintBackground:=false gesetzt werden - dann klappts auch ohne Flackern.

Ich hoffe, das hilf in Zukunft noch anderen weiter. :)

Auf die Lösung kam ich durch diese Diskussion in einer Borland-Newsgroup: Bei Google-Groups zum Nachlesen.

Bis denn
Bommel

messie 13. Jul 2007 12:09

Re: Flackern trotz doubleBuffered:=true
 
Zitat:

Zitat von Bbommel
Moin,

mit einigem Ausprobieren bin ich eben selbst über die Lösung gestolpert: Der Schuldige war das XPManifest, welches ich in mein Programm eingebunden habe. Einige Komponenten werden dadurch wohl anders neugezeichnet, so dass ein DoubleBuffered:=true alleine keine Wirkung mehr hat. Bei der Komponente, auf der das PaintBox-Objekt liegt (in meinem Fall ist das immer ein Panel) muss die Eigenschaft PaintBackground:=false gesetzt werden - dann klappts auch ohne Flackern.

Ich hoffe, das hilf in Zukunft noch anderen weiter. :)

Auf die Lösung kam ich durch diese Diskussion in einer Borland-Newsgroup: Bei Google-Groups zum Nachlesen.

Bis denn
Bommel

Ich wollte das nochmal aufwärmen, weil ich auch so ein Problem habe. Ich verwende zum Skalieren TFormResizer, der nacheinander die Größe aller Steuerelemente (wie auch Schriftgrößen etc.) beim Resize des Forms anpaßt.

DoubleBuffered macht sich gar nicht bemerkbar. Die Property PaintBackground (im Link wird ParentBackground genannt) gibt es bei mir in D6 offensichtlich nicht. Ich kann auch keinen Unterschied mit XP Manifest und ohne sehen.
Hat jemand noch eine andere Idee, wie ich das Flackern wegbekomme?

Grüße, Messie

Bbommel 13. Jul 2007 12:23

Re: Flackern trotz doubleBuffered:=true
 
Zitat:

Zitat von messie
DoubleBuffered macht sich gar nicht bemerkbar. Die Property PaintBackground (im Link wird ParentBackground genannt) gibt es bei mir in D6 offensichtlich nicht. Ich kann auch keinen Unterschied mit XP Manifest und ohne sehen.

Nur mal kurz zum ParentBackground: Du hast natürlich recht, die Eigenschaft heißt so und nicht paintBackground. War mein Fehler, weil ich wohl so sehr am Paint verzweifelt bin. :)

Bis denn
Bommel

messie 13. Jul 2007 12:31

Re: Flackern trotz doubleBuffered:=true
 
Zitat:

Zitat von Bbommel
Zitat:

Zitat von messie
DoubleBuffered macht sich gar nicht bemerkbar. Die Property PaintBackground (im Link wird ParentBackground genannt) gibt es bei mir in D6 offensichtlich nicht. Ich kann auch keinen Unterschied mit XP Manifest und ohne sehen.

Nur mal kurz zum ParentBackground: Du hast natürlich recht, die Eigenschaft heißt so und nicht paintBackground. War mein Fehler, weil ich wohl so sehr am Paint verzweifelt bin. :)

Bis denn
Bommel

Ich habe leider auch keine Eigenschaft ParentBackground :cry:

Grüße, Messie


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