Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi GIF-Animtion mit TImage anzeigen?! (https://www.delphipraxis.net/154893-gif-animtion-mit-timage-anzeigen.html)

Ghostleader 29. Sep 2010 19:35

Delphi-Version: 2010

GIF-Animtion mit TImage anzeigen?!
 
Hey.
Ich möchte eine Gif-Animation anzeigen. Das geht aber per "Image1.Picture.LoadFromFile" nicht, weil die Datei sich nicht abspielt, sondern als Standbild erscheint...
2 Ideen:
1.)
Ich versuce mit einem Timer 6 Bitmaps nacheinander anzuzeigen.
Zitat:

Image1.Picture.LoadFromFile('C:\Pictures\fig1_0.bm p');
Image1.Picture.LoadFromFile('C:\Pictures\fig1_1.bm p');
...
2.)
Ich benutze eine Schleife...:
Zitat:

for i := x to 6 do
begin
Image1.Picture.LoadFromFile('C:\Pictures\fig1_' + IntToStr(i) + '.bmp');
x := x +1;
end;
Der Prozess läuft bei beiden Möglichkeiten natürlich so schnell ab, dass immer nur das letzte Bild angezeigt wird. Hat jemand eine Idee wie man das hinauszögern kann? So das jedes Bild einzelnd angezeigt wird, ohne dass es eine realistische Geschwindigkeit verliert (Das Bild soll nicht stocken, oder haken.)
Mfg Ghost

mkinzler 29. Sep 2010 20:04

AW: GIF-Animtion mit TImage anzeigen?!
 
Ich würde eher eine Komponente nehmen, die das von sich aus kann (z.B. TGifAnimator aus der JVCL)

Ghostleader 29. Sep 2010 20:25

AW: GIF-Animtion mit TImage anzeigen?!
 
Danke für den Tipp.
Ich habe jetzt folgenden Quelltext:

Code:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  GIFimg: TGIFImage;
begin
  GIFImageDefaultAnimate := True;
  GIFimg:= TGIFImage.Create;
  try
    GIFimg.LoadFromFile('C:\Pictures\fig1_running.gif');
    Image1.Picture.Assign(GIFimg);
  finally
    GIFimg.Free;
  end;
end;
Dankeschön, funktioniert alles gut.
Jetzt habe ich nur noch den Schönheitfehler, dass mein Timer mit einem Intervall von 1 Sekunde,
zu schnell ist für das Gif-Picture, welches ca. 3-4 Sekunden laufen sollte.
Wenn ich Timer1.Intervall auf 3,4,5 oder höher setze, benötigt das Programm diese 3,4,5 Sekunden als "Ladezeit".
Aber damit komme ich noch klar ;).

Mfg Ghost

Y.Elm 24. Jan 2012 10:56

AW: GIF-Animtion mit TImage anzeigen?!
 
Es ist nicht nötig, mehrere Bilder zu laden und sich daraus eine Animation zu basteln.
Ab Delphi 2007 wurde TGIFImage in Delphi integriert. Damit kann man ein animiertes GIF einfach in ein TImage laden und dieses wird automatisch abgespielt.
Dazu sind folgende Schritte nötig:
Delphi-Quellcode:
uses {...} GIFImg; // Ermöglicht einem TImage das Abspielen von GIFs
procedure TForm1.FormCreate(Sender: TObject);
begin
  GIFImageDefaultAnimate := True; // Animation aktivieren
  Image1.Picture.LoadFromFile('C:meineAnimation.gif'); // Bild laden
end;
Weitere Informationen und ein hilfreiches FAQ findet man auf dieser Seite.


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