源于网络:
本人用的Delphi7,让我没有想到的是,它的TImage竟然不能显示GIF,但是我又要让它能显示,这个时候怎么办?
去网上找了很久,终于找到了TGIFImage的源码pas文件,就是那个广为流传的2.2版本,之所以选择源码文件pas,而不用dcu文件,是因为害怕Delphi的版本问题。
下面就开始它的应用。新建一个工程,菜单栏project-->Add to project-->选择GIFImage.pas-->打开,编译,是不是发现你的项目文件夹下面多了个dcu文件,好了,已经成果完成第 一步了,你可以将这个dcu和pas复制到Delphi的安装文件夹下的<lib>文件夹
在你的项目的开头interface部分中的uses中加入GIFImage,下面我们来看看一个TImage控件是怎么显示GIF的。
http://hi.baidu.com/spitcold/blog/item/7eaec93ad26da42d97ddd89e.html
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, StdCtrls, ImgList, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Button: TButton;
IdHTTP: TIdHTTP;
Image: TImage;
btn1: TButton;
procedure ButtonClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ButtonClick(Sender: TObject);
var
url:string;
ms:TMemoryStream;
jpg: TJPEGImage; //ctrl+鼠标左键单击,提示查找不到.jpg.pas单元文件,但可以正常编译运行。
begin
url := 'http://captcha.qq.com/getimage?aid=15000701&0.9129723031485226';
ms := TMemoryStream.Create;
jpg := TJPEGImage.Create;
IdHTTP.Get(url,ms);
ms.Position := 0;
jpg.LoadFromStream(ms);
Image.Canvas.Draw(100,100,jpg);
ms.Free;
jpg.Free;
{
Timage控件不能显示gif图片;
如果Url验证码图片为gif格式就会出错;
可以使用 TGIFImage 代替; TGIFImage手动安装,不自带,非控件,pas单元;
}
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
Image.Picture.LoadFromFile('F:/123.jpg'); //jpg格式正常;
Image.Picture.LoadFromFile('F:/123.gif')l //gif格式就出错了;
end;
end.