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 7180 korisnika na forumu :: 63 registrovanih, 6 sakrivenih i 7111 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: aleph_one, Asparagus, Avalon015, awathorn, bankulen, bojanM84, boxbole, Bubimir, C-Gun, celt, Chainsaw, Ciri1994, comi_pfc, Daba75, deLacy, Despot Đurađ, Foxdie, goxin, ibssa, Istman, Ivoo, joca83, KizJ, kuntakinte, ladro, LostInSpaceandTime, Lošmi, M74AB3, m94j, mat, MIKI63, Milo97, Milometer, Milos ZA, mirkoro, Mis uz pusku, mishkooo, Mićko, nemkea71, nikolapetkovic, OgnjenMitric, pablojepao, Parker, PrincipL, Radio operater, redstar72, sajorg, Sale0501, sap, Sava89, skok, ss10, stegonosa, Tandrkalo, tooljan, Tvrtko I, Velibor Radoja, vrgudinac, Werdum1, xAlex2, zdrebac, Zjmc, Zoran1959