以前要在 Delphi 中显示 GIF 动画,一种办法是使用第三方组件,别一种方法就是使用 WebBrowser 组件。在 Delphi 2009 中,其内部已支持 GIF 了(可能在 Delphi 2005 和 Delphi 2006 中已支持了,未确认)。关于 GIF 的相关类是 TGIFImage,在 GIFImg 单元中,看下面的代码,窗体中的 GIF 就动起来了:
- <pre style="margin-top:0px; margin-bottom:0px; white-space:pre-wrap; word-wrap:break-word"><span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong>uses</strong></span> GIFImg;
- <span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong>procedure</strong></span> TForm1.FormCreate(Sender: TObject);
- <span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong>begin</strong></span>
- <span style="color:#008000">// 先在窗体上放一个 TImage 组件:Image1;</span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong></strong></span>
- Image1.Picture.LoadFromFile(<span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF">'C:\Example.gif'</span><span style="color:#000080"><strong></strong></span>);
- <span style="color:#008000">// AnimationSpeed 设定动画速度,值越大,速度越快;</span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong></strong></span>
- TGIFImage(Image1.Picture.Graphic).AnimationSpeed := <span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF">500</span><span style="color:#000080"><strong></strong></span>;
- TGIFImage(Image1.Picture.Graphic).Animate := True;
- <span style="color:#008000"></span><span style="color:#008284"></span><span style="color:#0000FF"></span><span style="color:#000080"><strong>end</strong></span>;</pre>
首先,先下载TgifImage.pas单元。步骤:[project]-->[add to project...] 选择TgifImage.pas单元然后编译即可。
在使用TImage加载显示gif时通常是安装 TGifimage来扩展实现,在使用中也会有动态创建控件的情况,但如果直接加载gif图片话,gif动画并不会动,这就要先创建TGifImage类来加载动画,最后再交给Timage。代码如下:
- procedure TForm1.Button1Click(Sender: TObject);
- var
- objImg: TImage;
- objGif: TGIFImage;
- begin
- if OpenDialog1.Execute then
- begin
- objImg := TImage.Create(Self);
- objImg.Parent := Self;
- objImg.SetBounds(10, 20, 140, 200);
- objGif := TGIFImage.Create;
- objGif.LoadFromFile(OpenDialog1.FileName);
- objImg.Picture.Assign(objGif);
- TGIFImage(objImg.Picture.Graphic).Animate := True;
- end;
- end;