Delphi Can

Orjinalini görmek için tıklayınız: Android *.gif Dosya Oynatma.
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
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.
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.
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
(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.
(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
(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
(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
(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

[attachment=2341]

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.
[attachment=2340]
(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
(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.
Sayfalar: 1 2