Bản trình diễn bên dưới cố gắng vẽ GIF trên canvas của biểu mẫu. Nó không hoạt động. Hình ảnh sẽ không tiến lên. Làm thế nào để làm cho nó hoạt động?Làm thế nào để trích xuất khung từ một TGifImage thành bitmap?
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;
Những gì tôi muốn đạt được:
tôi muốn trích xuất tất cả các khung hình từ một GIF và đưa từng khung TRONG MỘT bitmap UNIQUE.
Cập nhật:
Tiếp tục ở đây: Cannot draw GIF on dynamically created TBitmap(s)
Vậy câu hỏi của bạn chính xác là gì? Bạn gặp vấn đề gì với mã bạn đã đăng? Điều gì không hoạt động như bạn mong đợi? Hãy thử đọc câu hỏi của bạn theo quan điểm của chúng tôi, nhớ rằng chúng tôi hoàn toàn không biết gì về mã của bạn đang cố gắng làm gì, bạn nghĩ nó nên làm gì, hoặc bất kỳ thông tin nào về những gì không hoạt động. Sau đó, vui lòng chỉnh sửa và thêm các chi tiết khác để chúng tôi có thể thử và giúp bạn. :-) –
Tôi không biết ai là người downvoting quá nhanh, nhưng hãy dừng lại. Cung cấp cho người đăng một vài phút để trả lời các nhận xét và khắc phục câu hỏi trước khi quyết định giảm giá, đặc biệt là khi mọi người đã yêu cầu họ làm như vậy. @Altar: "Nó không hoạt động" có nghĩa là hoàn toàn không có gì cho bất cứ ai ngoài bạn. ** Vui lòng đọc lại bình luận cuối cùng của tôi **. –
Câu hỏi đã được cập nhật. Cảm ơn Ken vì đã làm dịu đàn bò :) – Ampere