TGifImage .ActiveImage problem (gif trenutni frejm)

2

TGifImage .ActiveImage problem (gif trenutni frejm)

offline
  • Igor Đorđević
  • Pridružio: 28 Sep 2007
  • Poruke: 39
  • Gde živiš: Bor, Srbija

Hvala svima na trudu i pomoci Smile

Jesam, ako na ovo mislis...

((BugA)) ::Pokusavao sam sa OnPaint dogadjajem forme (TImage nema ovu mogucnost), ali nista nisam postigao. Cak sam postavio globalnu promenjivu koja sluzi kao brojac prolaza kroz proceduru, i ona raste, a ono ActiveImage stoji zakovano na -1.

E sad, primetio sam nesto interesantno... Ovaj globalni brojac (okida se na OnPaint forme) stigne do 30 kad animacija obrne ceo krug, a toliko i ima frejmova unutar gifa! Znaci, mogao bi na neki takav nacin da sredim brojac frejmova, ali... Kad ukljucim [goDirectDraw] kako animacija ne bi treperila, onda se vise procedura OnPaint ne okida, oba brojaca stoje na pocetnim vrednostima (0 i -1).

Forma nema okidac OnAnimate, pa mi nije jasno kako su oni to sredili u svom primeru. Pretrazio sam sve .pas fajlove unutar tog primera, i nigde nisam nasao proceduru koja bi evenutalno okidala ovaj dogadjaj/proceduru.


Inace evo sta sam dobio kao odgovor na drugom forumu...

Citat:>> one OnAnimate procedure, ali tu nastaje problem. Nikako ne mogu da skontam sta nju okida.

Worker thread.

Evo primera, a pivo pamtim Smile

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, GIFImage, ExtCtrls, StdCtrls; type   TForm1 = class(TForm)     Image: TImage;     Button1: TButton;     procedure Button1Click(Sender: TObject);   private     GIF            : TGIFImage;     procedure OnAnimate(Sender: TObject);      public   end; var   Form1: TForm1; implementation {$R *.dfm} procedure TForm1.OnAnimate(Sender: TObject); begin   if (TGIFPainter(Sender).ActiveImage < 0) then     Caption := ''   else     Caption := ' Frame '+IntToStr(TGIFPainter(Sender).ActiveImage+1) + ' of '+IntToStr(TGIFPainter(Sender).Image.Images.Count); end; procedure TForm1.Button1Click(Sender: TObject); begin   GIF := TGIFImage.Create;   try     Gif.LoadFromFile('slika.gif'); //    Image.Picture.Assign(Gif);     GIF.OnPaint := OnAnimate;     Image.Picture.Assign(GIF);   finally     GIF.Free;   end;   TGifImage(Image.Picture.Graphic).DrawOptions := TGifImage(Image.Picture.Graphic).DrawOptions + [goDirectDraw]; end; end.


Ovo radi!!! Smile))

Jos kad bi mogao da shvatim sta se desava u tih par linija koda, tj. u cemu je glavna caka pa onako nece da radi? Nije mi jasno to sa worker thread-om. Sta je Sender za proceduru OnAnimate? Zbog cega potreba da se uvodi GIF tipa TGIFImage, i zasto se ucitava iz fajla? Ne moze li da se direktno u TImage unese gif (u design modu), pa da se on dodeli umesto Sender?

p.s. Stavio sam ono jedno Image.Picture.Assign(Gif); pod komentar, nije potrebno Wink



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1106 korisnika na forumu :: 49 registrovanih, 2 sakrivenih i 1055 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 20624 - dana 04 Apr 2026 04:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, advokat84, Asparagus, branko7, cavatina, Cicumile, crazydkure, cyprus, Deki Duga Devetka, Demi87, Denaya, DPera, Filip1, Hans Gajger, igorpet, In_hero, Jakonjveliki, Jan, jopicus, Lance Guest, Litostroton, ludiagresivan, Marko Marković, Marko00, Medojed, Mickey91, milenko crazy north, N.e.m.a.nj.a., nenooo, Njubara, PlayerOne, RajkoB, RED4G-304, redstar011, Samo gledam, skvara, Smor, StankoVrankovic, tomigun, vjetar, Vlada78, vladobreda, vukdra, x9, xAlex2, XBMC, Zmaj Tolak, Žoržo, Đurđevdan