25-11-2020, Saat: 08:09
(Son Düzenleme: 25-11-2020, Saat: 08:09, Düzenleyen: hayalyilmaz43.)
(24-11-2020, Saat: 20:13)Mr.Developer Adlı Kullanıcıdan Alıntı: Merhaba,
Şu bileşeni deneyin. işinize yarayabilir.
Eğitimim videolarımı hazırlarken gözüme çarpmıştı anlatımını yapmıştım.
teşekkürler.
(24-11-2020, Saat: 21:45)mrmarman Adlı Kullanıcıdan Alıntı: 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.
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;
teşekkürler.


