我用PicShow显示一幅幅的图片,但每次都人读取文件PicShow1.Picture.LoadFromFile('图片文件');
,能不能将的图片读入内存,然后显示时在内存里读出图片显示?

解决方案 »

  1.   

    是不是可以把图片读到ImageList里面,然后需要的时侯再从ImageList里面读取
      

  2.   

    想问下ImageList添加和读取应用什么语句,给个例子让我参考一下好吗?
      

  3.   

    Image1.Picture.Bitmap.LoadFromResourceID( hInstance, 100);从资源文件中读取图片(100)
      

  4.   

    看看ImageList的帮助不就完了吗,应该是很简单的
      

  5.   

    将图片全部编译进一个独立的DLL里。动态调用,免的很耗内存啊。DLL加载的时间应该比单个读取全部文件要快
      

  6.   

    放资源文件,用brcc32编译 .rc文件,再用abc3000的方法
      

  7.   

    老方法了:
    创建资源文件   
    首先创建一个.Rc的纯文本文件。格式如下:   
    资源标识符 + 关键字 + 资源文件名   
    ① 资源标识符:程序中调用资源时的特殊标号;   
    ② 关键字:标识资源文件类型; 
    MIDIFILE midi '文件名'
    Wave: 资源文件是声音文件;   
    RCDATA: JPEG文件;   
    AVI: AVI动画;   
    ICON: 图标文件;   
    BITMAP: 位图文件;   
    CURSOR: 光标文件;   
    资源文件名:资源文件名;   
    ③ 资源文件名:编译的资源文件,比如动画、位图、光标等;   
    ④ 如:MyWav WAVE "FileName.Wav"   
    使用Borland资源编译器(BRCC32.EXE)转化.Rc文件成.Res文件。在DOS命令行下输入下列命令:   
    Brcc32 FileName.Rc // Brcc32.Exe在Delphi5Bin文件下。   
    3.在工程中引用资源文件   
    为了存取我们的资源文件,必须告诉Delphi链接我们的资源文件到应用程序中。因此我们可以在源代码中加入一条编译指令完成上述功能。这条指令必须紧跟在窗口指令后,如下形式:   
    {$R *.DFM} //Delphi自带编译指令   
    {$R FileName.Res} //新加入的编译资源文件的指令。   
    不要删除{$R *.DFM}指令,因为这行代码告诉Delphi链接下面的资源到窗口的资源中。   
    4.调用资源文件   
    (1)存取资源文件中的位图(Bitmap)   
    程序中如果想存取资源,你必须调用一些Windows API函数。保存在资源文件中的位图、光标和图标可以通过调用LoadBitmap、LoadCursor和LoadIcon函数存取。   
    本例举例说明如何存取资源文件中位图并显示在Timage控件中。   
    procedure TfrMain.btnCanvasPic(Sender: TObject);   
    Image1.Picture.Bitmap.Handle :=LoadBitmap(hInstance, ''资源标识符'');   
    end;   
    注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。你可以根据LoadBitmap函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。   
    另外一个存取显示位图的方法如下   
    procedure TfrMain.btnLoadPicClick(Sender: TObject);   
    begin   
    Image1.Picture.Bitmap.LoadFromResourceName(hInstance, ''资源标识符'');   
    end;   
    (2)存取资源文件中的光标   
    Screen.Cursors[]是一个光标数组,使用光标文件我们可以将定制的光标加入到这个属性中。因为默认的光标在数组中索引值是0,所以除非想取代默认光标,最好将定制的光标索引值设为1。   
    procedure TfrMain.btnUseCursorClick(Sender: TObject);   
    begin   
    Screen.Cursors[1] :=LoadCursor(hInstance,''资源标识符'');   
    Image1.Cursor :=1;   
    end;   
    (3)存取资源文件中的图标   
    将图标放在资源文件中,可以实现动态改变应用程序图标。   
    procedure TfrMain.LoadIconClick(Sender: TObject);   
    begin   
    Application.Icon.Handle := LoadIcon(hInstance, ''资源标识符'');   
    End;   
    (4)存取资源文件中的AVI   
    procedure TfrMain.LoadIconClick(Sender: TObject);   
    begin   
    Animate1.ResName :=''MyAvi'' ; //资源标识   
    Animate1.Active :=True ;   
    End ;   
    (5)存取资源文件中的JPEG   
    把jpeg单元加入到Interface的uses单元中。   
    procedure TForm1.LoadJPGClick(Sender: TObject);   
    var   
    Fjpg : TJpegImage ;   
    FStream :TResourceStream ;   
    begin   
    Fjpg :=TJpegImage.Create ;   
    FStream := TResourceStream.Create (Hinstance,''资源标识符'',RT_RCDATA) ;   
    FJpg.LoadFromStream (FStream) ;   
    Image1.Picture.Bitmap.Assign (FJpg);   
    end;   
    (6)存取资源文件中的Wave   
    把MMSystem加入到Interface的uses单元中   
    procedure TForm1.LoadWaveClick(Sender: TObject);   
    begin   
    PlaySound(''MyWav'', HInstance, Snd_ASync or Snd_Memory or snd_Resource) ;   
    end;