Hallo zusammen,
ich überarbeite derzeit meine Bilderverwaltung und möchte jetzt zusätzlich die Bilder in einer Diashow bildschirmfüllend darstellen. Dabei stört jedoch erheblich, dass bei einem Bildwechsel für ein paar Zehntelsekunden auf den grauen Hintergrund des Formulars geschalten wird. Nach einfügen von
foImage.DoubleBuffered:=true; // Verhindert grauen Bildschirm (flackern) zwischen zwei Bildern
ist das flackern zwar weg, dafür wird in einem Panel, in dem Name und Datum des Bildes dargestellt werden, der alte Text nicht gelöscht, sondern immer wieder überschrieben, so dass irgendwann nur noch ein schwarzer Fleck da ist.
Ich habe auch überlegt, mit zwei Images zu arbeiten, eins davon auf not Visible zu setzen, mit LoadFromFile zu beladen und danach das andere auf not Visible zu setzen und das neu beladen auf visible. Genutzt hat das aber nichts, da der LoadFromFile-Prozess wohl im Hintergrund fertiggestellt wird. Komischerweise hat aber auch eine Zwangspause nicht weitergeholfen. Eine Eigenschaft, anhand der ich feststellen kann, ob das Laden fertig ist, habe ich nicht gefunden
Delphi-Quellcode:
if Image1.visible then
Image2.Picture.LoadFromFile(sFile)
else
Image1.Picture.LoadFromFile(sFile);
uHilfs1.SetStart;
repeat
application.ProcessMessages; // Prozesszeit freigeben
until uHilfs1.GetStart>0.5 // 0.5 Sekunden warten
Image1.Visible:=not Image1.Visible;
Image2.Visible:=not Image1.Visible;
abläuft.
Wer hat Ideen, wie die flackerfreie Darstellung realisiert werden kann.
Vielen Dank
Gerd