Biraz önce bir kurgu hazırladım sizin için denemeye değer diye düşündüm.
Boş bir proje açıp Forma bir adet TButton bir adet de TImage koyarak aşağıdaki kodu bir deneyin isterseniz. İşinizi göreceğini değerlendiriyorum.
* LoopCount (0) ise sürekli loop eder, (1) veya yukarısı ise sayı kadar tekrar eder.
Boş bir proje açıp Forma bir adet TButton bir adet de TImage koyarak aşağıdaki kodu bir deneyin isterseniz. İşinizi göreceğini değerlendiriyorum.
* LoopCount (0) ise sürekli loop eder, (1) veya yukarısı ise sayı kadar tekrar eder.
Uses Vcl.Imaging.GIFImg; var aGif : Vcl.Imaging.GIFImg.TGIFImage; aRenderer : Vcl.Imaging.GIFImg.TGIFRenderer; aRect : WinApi.Windows.TRect; procedure TForm1.GifChange(Sender: TObject); begin if (aRenderer.LoopMax > 0) and (aRenderer.LoopCount > aRenderer.LoopMax) then begin // aRenderer.LoopMax equals 0 means Infinite aRenderer.Animate := False; FreeAndNil( aRenderer ); FreeAndNil( aGif ); end else aRenderer.Draw( Image1.Canvas, aRect ); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin if NOT Assigned(aGif) then begin aGif := TGIFImage.Create; aGif.LoadFromFile( 'c:\ARMAN.Study\Downloads\ezgif.com-gif-maker.gif' ); aGif.OnChange := GifChange; end; if Assigned(aRenderer) then FreeAndNil( aRenderer ); aRenderer := TGIFRenderer.Create( aGif ); aRect := Rect(0, 0, aGif.Width, aGif.Height); aRect.offset((Image1.Width - aGif.Width) div 2, (Image1.Height- aGif.Height) div 2); aRenderer.Animate := True; aRenderer.StartAnimation; aRenderer.Draw(Image1.Canvas, aRect); aGif.Animate := True; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if Assigned( aGif ) then begin aGif.Animate := False; FreeAndNil( aRenderer ); FreeAndNil( aGif ); end; end;

Saygılarımla
Muharrem ARMAN

Muharrem ARMAN


