Aşağıdaki demo, formun tuvalindeki GIF'yi çizmeye çalışır. Çalışmıyor. Görüntü ilerlemeyecek. Nasıl çalıştırılır?
Bir GIF gelen tüm çerçeveleri ayıklamak ve EŞSİZ bitmap İÇİNDE her kareyi koymak istiyorum:Bir TGifImage'den Bitmap'lere kareler nasıl çıkarılır?
procedure TForm1.FormCreate(Sender: TObject);
begin
GIF := TGIFImage.Create;
GIF.LoadFromFile('c:\2.gif');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
GIF.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
VAR i: Integer;
begin
REPEAT
for i:= 0 to GIF.Images.Count-1 DO
begin
DisplayGifFrame(i);
Sleep(30);
end;
UNTIL FALSE;
end;
procedure TForm1.DisplayGifFrame(AIndex: Integer);
VAR
Renderer: TGIFRenderer;
begin
Renderer := TGIFRenderer.Create(GIF);
TRY
Renderer.Animate := TRUE;
Renderer.FrameIndex := AIndex;
Renderer.Draw(Canvas, Canvas.ClipRect);
{save frame in a bitmap here. save bitmap to disk}
// xxx
FINALLY
Renderer.Free;
end;
end;
elde etmek istiyorum ne.
Güncelleme:
burada devam etti: Cannot draw GIF on dynamically created TBitmap(s)
Sorunuz tam olarak nedir? Gönderdiğiniz kodla ilgili sorun nedir? Ne beklediğiniz gibi çalışmıyor? Sorularınızı bizim açımızdan okumaya çalışın, kodunuzun ne yapmaya çalıştığını, ne yaptığınızı düşündüğünüzü veya neyin çalışmadığına dair herhangi bir bilgi olmadığını kesinlikle hatırlayın. Daha sonra lütfen yardım edip yardım alabilmemiz için daha fazla ayrıntıyı düzenleyin ve ekleyin. :-) –
Kimin bu kadar çabuk düşürdüğünü bilmiyorum ama lütfen dur. Özellikle insanların zaten bunu yapmalarını istediğinde, reddetmeye karar vermeden önce yorumlara yanıt vermek ve soruyu düzeltmek için postere birkaç dakika verin. @Altar: "İşe yaramıyor", kesinlikle sizden başka kimseye hiçbir şey ifade etmiyor. ** Lütfen son yorumumu tekrar oku **. –
Soru güncellendi. Sürüyü sakinleştirmek için teşekkürler Ken :) – Ampere