Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android *.gif Dosya Oynatma.
#1
Merhaba

windows android ios da arkası transparent ve loop-count u 1 olan gif dosyamı oynatmak istiyorum.

loop-count uda dikkate almalı bitince tekrar başlamamalı infinite değilse,

ve arka pilanı transparent yani oynatan obje arkadaki objeleride gösterebilmeli

bu problem nasıl çözülebilir?

bu link problemimi çözmüyor, kendi içinde sorunları mevcut.
Cevapla
#2
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.
Cevapla
#3
Lightbulb 
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;



yqgbc6l7rkmpzslgmnxr.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#4
(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;



yqgbc6l7rkmpzslgmnxr.gif

teşekkürler.
Cevapla
#5
(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.

Projeyi build ederken resimdeki hataları alıyorum
https://i.hizliresim.com/2nazh9t.png
WWW
Cevapla
#6
(24-04-2023, Saat: 21:33)quiet1day Adlı Kullanıcıdan Alıntı:
(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.

Projeyi build ederken resimdeki hataları alıyorum
https://i.hizliresim.com/2nazh9t.png

1- Project Manager > Proje üzerinde sağ tuş ile Clean
2- Delphi IDE Project > Deployment ---> Revert To Default
3- Build
Begin : = end / 2;
Cevapla
#7
(25-04-2023, Saat: 09:34)RAD Coder Adlı Kullanıcıdan Alıntı:
(24-04-2023, Saat: 21:33)quiet1day Adlı Kullanıcıdan Alıntı: Projeyi build ederken resimdeki hataları alıyorum
https://i.hizliresim.com/2nazh9t.png

1- Project Manager > Proje üzerinde sağ tuş ile Clean
2- Delphi IDE Project > Deployment ---> Revert To Default
3- Build

Cevabınız için teşekkürler . Aşamaları uyguladığımda ;
https://i.hizliresim.com/j033vqa.png
hatasını veriyor
WWW
Cevapla
#8
(25-04-2023, Saat: 17:35)quiet1day Adlı Kullanıcıdan Alıntı:
(25-04-2023, Saat: 09:34)RAD Coder Adlı Kullanıcıdan Alıntı: 1- Project Manager > Proje üzerinde sağ tuş ile Clean
2- Delphi IDE Project > Deployment ---> Revert To Default
3- Build

Cevabınız için teşekkürler . Aşamaları uyguladığımda ;
https://i.hizliresim.com/j033vqa.png
hatasını veriyor

   

Sanırım sorun, AndroidManifest.template dosyasından kaynaklıydı. Dosyayı silince sorunsuz çalışıyor.
Örnek uygulamanın Delphi 11.3.1 ile çalışan hali ektedir.

.zip   GIFImageDemo.zip (Dosya Boyutu: 3,23 MB / İndirme Sayısı: 17)
Begin : = end / 2;
Cevapla
#9
(26-04-2023, Saat: 09:48)RAD Coder Adlı Kullanıcıdan Alıntı:
(25-04-2023, Saat: 17:35)quiet1day Adlı Kullanıcıdan Alıntı: Cevabınız için teşekkürler . Aşamaları uyguladığımda ;
https://i.hizliresim.com/j033vqa.png
hatasını veriyor



Sanırım sorun, AndroidManifest.template dosyasından kaynaklıydı. Dosyayı silince sorunsuz çalışıyor.
Örnek uygulamanın Delphi 11.3.1 ile çalışan hali ektedir.

Eklediğiniz dosyayı yüklemeye çalışıyorum olmuyor , clean ediyorum , lib'i revart ediyorum temiz build ediyorum tekrar deniyorum olmuyor bu delphi bana kafayı yedirecek.
https://i.imgyukle.com/img/2023/05/01/Q7SSK1.png
https://i.imgyukle.com/img/2023/05/01/Q7SHgs.png
WWW
Cevapla
#10
(01-05-2023, Saat: 16:24)quiet1day Adlı Kullanıcıdan Alıntı:
(26-04-2023, Saat: 09:48)RAD Coder Adlı Kullanıcıdan Alıntı: Sanırım sorun, AndroidManifest.template dosyasından kaynaklıydı. Dosyayı silince sorunsuz çalışıyor.
Örnek uygulamanın Delphi 11.3.1 ile çalışan hali ektedir.

Eklediğiniz dosyayı yüklemeye çalışıyorum olmuyor , clean ediyorum , lib'i revart ediyorum temiz build ediyorum tekrar deniyorum olmuyor bu  delphi bana kafayı yedirecek.
https://i.imgyukle.com/img/2023/05/01/Q7SSK1.png
https://i.imgyukle.com/img/2023/05/01/Q7SHgs.png

Eklediğiniz ekran resimleri görünmüyor.
Begin : = end / 2;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FMX'De whatsapp dosya paylaşımı mcuyan 6 762 06-02-2026, Saat: 18:21
Son Yorum: mcuyan
  Android Uygulama İkonu ARM 2 400 11-11-2025, Saat: 12:15
Son Yorum: ARM
  Android SDK kajmerantime 1 384 28-10-2025, Saat: 14:53
Son Yorum: cinarbil
  Android El Terminali Barkod Okuyucu Verisi tuna 0 334 17-10-2025, Saat: 01:07
Son Yorum: tuna
  Android işlem öneriliyor uyarısı! Coban 9 1.863 07-08-2025, Saat: 12:07
Son Yorum: RAD Coder



Konuyu Okuyanlar: 1 Ziyaretçi