首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

从资源文件调用gif文件出错Abstract Error (已经uses gifimage了),该怎么处理

2012-03-17 
从资源文件调用gif文件出错Abstract Error (已经uses gifimage了)代码如下:已经usesgifimage了,我用gifani

从资源文件调用gif文件出错Abstract Error (已经uses gifimage了)
代码如下:
已经uses   gifimage了,我用gifanimator也不行啊!!同样的错误啊!

procedure   TForm1.Button1Click(Sender:   TObject);  
var  
Stream:TResourceStream;  
Gif:TGraphic;  
Begin
Stream:=TResourceStream.Create(HINSTANCE, 't1z ', 'GIF ');
Try
GIF:=TGraphic.Create;
Try
GIF.LoadfromStream(Stream);
Image1.Picture.Assign(GIF);
Finally
GIF.Free;
end;
Finally
Stream.Free;
end;
end;



[解决办法]
Try:

image1.Picture.Bitmap.Assign(GIF);
[解决办法]
可以的,会把gif自动转成bitmap显示出来。看看tgifimage.assignto的实现

procedure TGIFImage.AssignTo(Dest: TPersistent);
begin
if (Dest is TBitmap) then
Dest.Assign(Bitmap)
else
inherited AssignTo(Dest);
end;
[解决办法]
请到这里下载最新版本和DEMO,几年没更新了,今年刚刚更新。
http://www.tolderlund.eu/delphi/

下面这段是官方DEMO代码。

uses
GIFimage;

procedure TFormDemo.ButtonLoadClick(Sender: TObject);
var
Stream: TStream;
GIF: TGIFImage;
begin
// Do not use buffering.
// This is safe since we have complete control over the TImage 's canvas
include(GIFImageDefaultDrawOptions, goDirectDraw);

// Create a stream to load the GIF resource from
Stream := TResourceStream.Create(hInstance, 'download ', 'GIF ');
try
GIF := TGIFImage.Create;
try
// Load the GIF from the resource stream
GIF.LoadFromStream(Stream);
// Display the GIF in the TImage
ImageGIF.Picture.Assign(GIF);
finally
GIF.Free;
end;
finally
Stream.Free;
end;
end;

procedure TFormDemo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// Since we are using the goDirectDraw options, we MUST stop the GIF paint
// thread before the form is destroyed.
ImageGIF.Picture.Graphic := nil;
end;

热点排行