2012-03-05 24 views
19

Tôi nghĩ rằng không có hỗ trợ gốc để gif hình ảnh động.Làm thế nào để sử dụng Animated Gif ở dạng delphi

Cách tốt nhất là gì? bất kỳ thành phần miễn phí nào cho phép điều đó? Tôi đã suy nghĩ trong việc sử dụng một TImage và một ImageList + Timer, nhưng tôi cần phải xuất khẩu mỗi khung của gif vào một tập tin bmp tách biệt.

Trả lời

42

Nó khá đơn giản trong Delphi hiện đại. Tất cả được tích hợp sẵn. Hãy thả một số TImage vào biểu mẫu và tải GIF động vào thuộc tính Hình ảnh. Sau đó, khởi động hoạt hình bằng phương tiện của Animate tài sản:

(Image1.Picture.Graphic as TGIFImage).Animate := True; 

Bạn có thể kiểm soát hoạt hình với AnimateLoopAnimateSpeed. Nó sẽ được khá dễ dàng để đoán làm thế nào để chuyển đổi các hình ảnh động tắt một lần nữa!

Bây giờ, vì bạn đang sử dụng Delphi 7, bạn không có tích hợp thành phần TGIFImage. Tuy nhiên, bạn có thể tải xuống mã từ trang web Finn Tolderlund's (bạn muốn có phiên bản mới nhất của TGIFImage). Với phiên bản này của thành phần, mã ở trên sẽ hoạt động tốt, mặc dù cá nhân tôi đã không sử dụng nó kể từ khi tôi chuyển từ D6 đến D2010 một vài năm trở lại.

Tất cả các mã TGIFImage thực sự chỉ là phiên bản của cùng một thành phần, ban đầu được viết bởi Anders Melander và, trong năm 2007, được tặng cho Embarcadero để đưa vào Delphi.

+0

Beware the shit- chương trình được gọi là Jedi VCL sẽ ngăn tải GIF động vào một TImage nếu nó được đăng ký. –

6

này chỉ đơn giản là tải một gif động và không làm cho một

procedure TForm1.FormCreate(Sender: TObject); 

begin 

    (Image1.Picture.Graphic as TGIFImage).Animate := True;// gets it goin' 

    (Image1.Picture.Graphic as TGIFImage).AnimationSpeed:= 500;// adjust your speed 

    Form1.DoubleBuffered := True;// stops flickering 

end; 

stackoverflow đã giúp tôi và vì vậy chút tôi lại :)

+1

DoubleBuffered: = True thường là một động thái xấu –

Các vấn đề liên quan