想沒想過在DELPHI中顯示GIF動畫?Delphi的用戶是非常幸運的,因為有免費控件可以使用。最著名的控件是Anders Melander編寫的TGifImage,並提供完整的源程序。它原來的主頁是www.melander.dk/delphi/gifimage/,不過有很長時間沒有更新了。如果要在新版本的Delphi中使用,可以從http://finn.mobilixnet.dk/delphi/下載Finn Tolderlund改寫的Delphi 5/6/7版本的TGifImage。 現在看看怎么在DELPHI中使用GIFImage.pas文件,顯示GIF動畫首先,新建一個工程,在Project-OPTIONS菜單中的Directories/Conditionals頁中的search中添加一個路徑,這個路徑指向GIFImage.pas所在文件夾然后在FORM1的PUBLIC區添加一個變量GIF,定義為TGIFImage類型在form1的onCreate中添加代碼:GIF := TGIFImage.Create; 在form1上添加一個按鈕button1,添加一個image控件在button1的click事件中添加代碼: Gif.LoadFromFile('d:/abc.gif'); GIF.Paint(Image1.Canvas,Image1.ClientRect,[goAsync,goLoop,goAnimate]);
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,GIFImage, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Panel1: TPanel;
Image2: TImage;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
i:integer;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
gif:TGIFImage;
gif1:TGIFImage;
begin
//include(GIFImageDefaultDrawOptions, goDirectDraw);
gif:=TGIFImage.Create;
gif1:=TGIFImage.Create;
gif.LoadFromFile('test.gif');
gif1.LoadFromFile('test.gif');
try
GIF.Paint(Image1.Canvas,Image1.ClientRect,[goTransparent,goDither,goAsync,goLoop,goAnimate,goDirectDraw]);
GIF1.Paint(Image2.Canvas,Image2.ClientRect,[goTransparent,goAsync,goLoop,goAnimate]);
//Image1.Picture.Assign(gif);
//include(GIFImageDefaultDrawOptions, goDirectDraw);
//Image2.Picture.Assign(gif1);
finally
//GIF.Free;
//gif1.Free;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//gif.PaintStart;
//image1.Picture.Assign(gif.Bitmap);
//Image1.Repaint;
// if (i<(gif.Images.Count-1)) then Inc(i) else i:=0;
end;
end.