Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TGifImage bleibt stehen (https://www.delphipraxis.net/73345-tgifimage-bleibt-stehen.html)

messie 16. Jul 2006 13:38


TGifImage bleibt stehen
 
Hallo,

ich wollte ein animiertes gif einbinden und habe mal ein wenig in den alten threads nachgelesen. Wenn ich das zum Laufen bringe, bleibt die Animation nach einiger Zeit stehen. Danach läßt sie sich nur noch für einen Durchlauf starten.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  demo : TGifImage;
  Rect : TRect;
begin
  demo := TGifImage.Create;
  demo.LoadFromFile(extractfilepath(application.ExeName) + 'seegeranim.gif');
  rect.Left := 0;
  rect.Top := 0;
  rect.Right := 200;
  rect.Bottom := 200;
  demo.Paint(Form1.Canvas,Rect,[goasync,goanimate,goLoopContinously,goTransparent]);
  application.ProcessMessages;
end;
Weil ich es im MainThread starte habe ich goasync gewählt (sonst gab es Zugriffsverletzungen).
Was mache ich da noch falsch?

Grüße, Messie

Bernhard Geyer 16. Jul 2006 14:48

Re: TGifImage bleibt stehen
 
Und mit jedem Button-Click hast Du eine schöne speicherlücke.

Lege das Control mal auf dein Formular und setze ein Property der Art Active/Animate auf True.


oder dynamisch erzeugt:

Delphi-Quellcode:
type
  TForm1
    ..
  protected
    demo : TGifImage;
    ...
  end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(demo) then
  begin
    demo := TGifImage.Create(self);
    demo.LoadFromFile(extractfilepath(application.ExeName) + 'seegeranim.gif');
    demo.Left := 0;
    demo.Top := 0;
    demo.Right := 200;
    demo.Bottom := 200;
    demo.Parent := self;
    demo.Animage := True; // <- könnte anderen namen haben
end;

messie 16. Jul 2006 15:10

Re: TGifImage bleibt stehen
 
Parent gibt es da nicht.

Ich habe aber herausgefunden, daß die Beschreibung nicht korrekt ist oder daß ich eine andere Version habe, die das nicht richtig unterstützt. Mit
Delphi-Quellcode:
demo.Paint(Form1.Canvas,Rect,[goasync,goanimate,goTransparent,goLoop]);
statt goLoopContinuously geht es. Ich teste gerade noch ob ea auch lange genug geht weil laut meiner Beschreibung nur bis count animiert wird. Habe so eine property aber nicht gefunden.

Grüße, Messie


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