GIF动画也是一个GIF文件,既然是文件,你就可以打包到资源中去。

解决方案 »

  1.   

    你可以用ImageList把Gif包含进去,然后再从ImageList[0...n-1]取出Image做动画。不过这样你的图片质量效果不是很清晰。
      

  2.   

    所以我就想那样用,
    to chechy: 我是一保菜鸟,没有自己做过资源文件,请问怎样做呢,还有怎样调用资源文件里的文件呢
      

  3.   

    怎樣打包到res中﹐說起比較麻煩﹐你還是先翻翻書﹐
    具體做起來﹐還是很簡單的
      

  4.   

    我找了几本书都找不到怎样打包到res的
      

  5.   

    自己做一个一个资源文件的描述文本RC文件,例如 sample.rc ,“记事本”程序创建就行了。然后可以输入一些我们要定义的资源,例如:MEN BITMAP c:\bitmap\men.bitmap
    ARJ EXEFILE c:\arj.exe
    MOV AVI c:\mov.avi
    GIf AA  d:\a.gif
    然后用BRCC32把这个RC文件编译成sample.res(真正的资源文件)。在Delphi的工程文件中使用 $R 编译指令让Delphi包括资源到EXE文件里面。{$R sample.res}这样我们就可以在这个单一的执行文件中调用资源了。举例如下:EXEFILE:procedure ExtractRes(ResType, ResName, ResNewName : String);
    var 
    Res : TResourceStream; 
    begin
    Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
    Res.SavetoFile(ResNewName);
    Res.Free; 
    end;
      

  6.   

    to hellion(恶人) :你的方法刚试过不行
      

  7.   

    写一个rc文件,然后用brcc32将其编译成res文件。
    在Delphi的源程序中加入
    {$R Your.RES}
    就可以了。
    rc文件这样写
    YOURIDENTIFY RCDATA HELLO.GIF
      

  8.   

    谢谢各位,为什么我不能打开Brcc32.exe,只出一个DOS窗口一会儿就消失了
      

  9.   

    在运行中先敲cmd,然后按回车。
    出现DOS窗口后,在敲BRCC32。
      

  10.   

    不是这样吗?我这样才可以用的D:\delphi5\Delphi5\Bin brcc32 ***.rc
      

  11.   

    一般装Delphi的时候,都会把bin加入到搜索路径下。所以直接写
    brcc32 *.rc
      

  12.   

    我的资源文件名叫aaa.res,在资源文件里的一幅GIF的标识符是ABC,请问怎样调用呢
      

  13.   

    是不是这样写的:
    Image1.Picture.Bitmap.LoadFromResourceName(aaa,'ABC');
    但我试过不行,请问怎样写呢
      

  14.   

    调用应该比较复杂。
    procedure GetSource;
    var
      Text: string;
      ResInstance: THandle;
      HRes: HRSRC;
      a: TStrings;
    begin
      ResInstance := FindResourceHInstance(HInstance);
      HRes := FindResource(ResInstance, 'YOURIDENTIFY', RT_RCDATA);
      Text := PChar(LockResource(LoadResource(ResInstance, HRes)));
      SetLength(Text, SizeOfResource(ResInstance, HRes));
      a := TStringList.Create;
      a.Text := Text;
      a.SaveToFile('a.gif');
      a.Free;
    end;
      

  15.   

    看不明白你的代码,按我上面说的,我要用一个image打开资源文件里的GIF应该怎样写呢
      

  16.   

    chechy请帮我写出来好吗,分数我一定会再加的
      

  17.   

    你安装了GifImage吗,如果没有,是不能用TImage打开的。
      

  18.   

    而且可以打开GIF的,只是我不知怎样打包进去
      

  19.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      ResInstance: THandle;
      HRes: HRSRC;
      Size: Integer;
      a: TStream;
    begin
      ResInstance := FindResourceHInstance(HInstance);
      HRes := FindResource(ResInstance, 'YOURIDENTIFY', RT_RCDATA);
      Size := SizeOfResource(ResInstance, HRes);
      a := TFileStream.Create('2.gif', fmCreate);
      a.Write(LockResource(LoadResource(ResInstance, HRes))^, Size);
      a.Free;
    Image1.Picture.LoadFromFile('2.gif');
    end;
      

  20.   

    还是不行的,这次出错是在gifimage的单元里
    procedure ReadCheck(Stream: TStream; var Buffer; Size: LongInt);
    var
      ReadSize : integer;
    begin
      ReadSize := Stream.Read(Buffer, Size);
      if (ReadSize <> Size) then
        Error(sOutOfData);<----这里出错
    end;
      

  21.   

    呵呵,我这里好的。你观察一下,硬盘上2.gif和你原来的gif大小一样吗?
      

  22.   

    什么意思? 2.gif只是你用的图像,我改了我的图,那分配的空间也应该是我的图像的大小吧
      

  23.   

    2.gif是还原你打入程序的gif文件。所以大小和你装入程序的GIF大小应该完全一直。
    我担心
    HRes := FindResource(ResInstance, 'YOURIDENTIFY', RT_RCDATA);
    上面的语句,你没有修改正确。
      

  24.   

    只要修改这个就行了吧?YOURIDENTIFY改为我的资源文件里的第一个参数吧
      

  25.   

    对的。还有确认第二个参数一定是RCDATA。
      

  26.   

    你要用BRCC32编译啊,这样生成的RES文件很大。
      

  27.   

    我就是用BRCC32编译了,我记得第一次是60K的,但现在做了几次还是只有32字节,真奇怪
      

  28.   

    60K还差不多,因为资源文件至少比你的文件大。检查一下你的rc文件是否写错了。
      

  29.   

    我是这样写的
    GIF RCDATA  e:\ph\hanson.gif
      

  30.   

    你能不能在同一个目录下啊,说不定BRCC32不认识路径。我觉得最好不要写e:\ph\