AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bild-/Imagewechsel flackerfrei darstellen

Offene Frage von "norwegen60"
Ein Thema von norwegen60 · begonnen am 7. Jan 2008 · letzter Beitrag vom 7. Jan 2008
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 09:47
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
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 11:58
Ich empfehle Dir dafür mal Andorra2D anzuschauen. Das ist eine 2D-Engine mit Hardwarebeschleunigung, zu der du hier im Forum sicher einiges finden wirst.
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 13:25
Zitat von Codewalker:
Ich empfehle Dir dafür mal Andorra2D anzuschauen. Das ist eine 2D-Engine mit Hardwarebeschleunigung, zu der du hier im Forum sicher einiges finden wirst.
Du willst für eine Diashow einfache mit einfachem Bildwechsel eine extra Grafikengine einsetzen? Das nenne ich mal mit Kanonen auf Spatzen schießen.

Also ich habe bei meinem Bildbetrachter auch einfach DoubleBuffered eingeschaltet. So ein Problem wie du es it dem label hast, habe ich nicht. Ich habe auch bisher noch nie von einem solchem Problem gehört.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 13:44
Das Problem ist die Verwendung von TImage. Dieses zeichnet sich auf die Canvas des Parents und sobald sich das Bild ändert muss das Elternelement mit allem was drauf ist neu gezeichnet werden. Wenn du keine Alphatransparenz benötigst verwende eine Komponente mit eigener Canvas.

Was hat die Frage eigentlich mit Datenbanken zu tun? In welcher Art und Weise beeinflussen die dein Vorhaben bzw. das was passiert aber nicht passieren soll?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#5

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 14:20
Zitat von SirThornberry:
Das Problem ist die Verwendung von TImage. Dieses zeichnet sich auf die Canvas des Parents und sobald sich das Bild ändert muss das Elternelement mit allem was drauf ist neu gezeichnet werden. Wenn du keine Alphatransparenz benötigst verwende eine Komponente mit eigener Canvas.
Das habe ich festgestellt. Wenn ich den Text per TDBText ausgebe, wird er immer wieder überschrieben und schwarz, wenn ich ihn in einem TDBEdit-Feld ausgebe, wird er korrekt dargestellt. Allerdings gibt es in dem TPanel nach "foImage.DoubleBuffered:=true;" auch sonst noch ein paar unschöne Effekte. So bleiben Teile des alten Hintergrunds stehen. (s. beiliegendes Bild). Gibt es sonst noch Möglichkeiten?

Zitat von SirThornberry:
Was hat die Frage eigentlich mit Datenbanken zu tun? In welcher Art und Weise beeinflussen die dein Vorhaben bzw. das was passiert aber nicht passieren soll?
Eigentlich gar nichts, aber als ich die Frage Absenden wollte, reklamierte die Seite, dass ich noch keine Datenbank und keine Zugriffsart festgelegt habe und so habe ich sie halt ausgefüllt
Miniaturansicht angehängter Grafiken
unbenannt_183.jpg  
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 15:05
Zitat von norwegen60:
Eigentlich gar nichts, aber als ich die Frage Absenden wollte, reklamierte die Seite, dass ich noch keine Datenbank und keine Zugriffsart festgelegt habe und so habe ich sie halt ausgefüllt
Liegt vielleicht daran, dass die Frage in dem Unterforum "Datenbanken" erstellt wurde?

Zur Frage: Nutze TPaintBox oder leite dir eine eigene Komponente z.B. von TGraphicControl ab.
  Mit Zitat antworten Zitat
7. Jan 2008, 15:06
Dieses Thema wurde von "SirThornberry" von "Datenbanken" nach "VCL / WinForms / Controls" verschoben.
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Bild-/Imagewechsel flackerfrei darstellen

  Alt 7. Jan 2008, 18:22
Zitat von Hador:
Zitat von Codewalker:
Ich empfehle Dir dafür mal Andorra2D anzuschauen. Das ist eine 2D-Engine mit Hardwarebeschleunigung, zu der du hier im Forum sicher einiges finden wirst.
Du willst für eine Diashow einfache mit einfachem Bildwechsel eine extra Grafikengine einsetzen? Das nenne ich mal mit Kanonen auf Spatzen schießen.

Also ich habe bei meinem Bildbetrachter auch einfach DoubleBuffered eingeschaltet. So ein Problem wie du es it dem label hast, habe ich nicht. Ich habe auch bisher noch nie von einem solchem Problem gehört.
Naja, sobald Bewegung und Überblenden reinkommt, ist der Canvas sicherlich mit der Leistung am Ende. Gerade was das Anzeigen von Bildern von Digitalkameras im Megapixelbereich angeht. Und das was er umsetzen will kostet in Andorra vielleicht ~60 Zeilen und gut ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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