資源文件的創(chuàng)建與使用
1.創(chuàng)建資源文件
首先創(chuàng)建一個.Rc的純文本文件。格式如下:
資源標(biāo)識符 + 關(guān)鍵字 + 資源文件名
(1) 資源標(biāo)識符:程序中調(diào)用資源時的特殊標(biāo)號;
(2) 關(guān)鍵字:標(biāo)識資源文件類型;
Wave: 資源文件是聲音文件;
RCDATA: JPEG文件;
AVI: AVI動畫;
ICON: 圖標(biāo)文件;
BITMAP: 位圖文件;
CURSOR: 光標(biāo)文件;
資源文件名:資源文件名;
(3) 資源文件名:編譯的資源文件,比如動畫、位圖、光標(biāo)等;
(4) 如:MyWav WAVE "FileName.Wav "
使用Borland資源編譯器(BRCC32.EXE)轉(zhuǎn)化.Rc文件成.Res文件。在DOS命令行下輸入下列命令:
Brcc32 FileName.Rc // Brcc32.Exe在Delphi5\Bin文件下。
2.在工程中引用資源文件
為了存取我們的資源文件,必須告訴Delphi鏈接我們的資源文件到應(yīng)用程序中。因此我們可以在源代碼中加入一條編譯指令完成上述功能。這條指令必須緊跟在窗口指令后,如下形式:
{$R *.DFM} file://Delphi自帶編譯指令
{$R FileName.Res} file://新加入的編譯資源文件的指令。
不要刪除{$R *.DFM}指令,因為這行代碼告訴Delphi鏈接下面的資源到窗口的資源中。
3.調(diào)用資源文件
(1)存取資源文件中的位圖(Bitmap)
程序中如果想存取資源,你必須調(diào)用一些Windows API函數(shù)。保存在資源文件中的位圖、光標(biāo)和圖標(biāo)可以通過調(diào)用LoadBitmap、LoadCursor和LoadIcon函數(shù)存取。
本例舉例說明如何存取資源文件中位圖并顯示在Timage控件中。
procedure TfrMain.btnCanvasPic(Sender: TObject);
Image1.Picture.Bitmap.Handle :=LoadBitmap(hInstance, '資源標(biāo)識符 ');
end;
注:如果位圖沒有裝載成功,程序仍舊執(zhí)行,但是Image將不再顯示圖片。你可以根據(jù)LoadBitmap函數(shù)的返回值判斷是否裝載成功,如果裝載成功返回值是非0,如果裝載失敗返回值是0。
另外一個存取顯示位圖的方法如下
procedure TfrMain.btnLoadPicClick(Sender: TObject);
begin
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, '資源標(biāo)識符 ');
end;
(2)存取資源文件中的光標(biāo)
Screen.Cursors[]是一個光標(biāo)數(shù)組,使用光標(biāo)文件我們可以將定制的光標(biāo)加入到這個屬性中。因為默認(rèn)的光標(biāo)在數(shù)組中索引值是0,所以除非想取代默認(rèn)光標(biāo),最好將定制的光標(biāo)索引值設(shè)為1。
procedure TfrMain.btnUseCursorClick(Sender: TObject);
begin
Screen.Cursors[1] :=LoadCursor(hInstance, '資源標(biāo)識符 ');
Image1.Cursor :=1;
end;
(3)存取資源文件中的圖標(biāo)
將圖標(biāo)放在資源文件中,可以實現(xiàn)動態(tài)改變應(yīng)用程序圖標(biāo)。
procedure TfrMain.LoadIconClick(Sender: TObject);
begin
Application.Icon.Handle := LoadIcon(hInstance, '資源標(biāo)識符 ');
End;
(4)存取資源文件中的AVI
procedure TfrMain.LoadIconClick(Sender: TObject);
begin
Animate1.ResName := 'MyAvi ' ; file://資源標(biāo)識
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, '資源標(biāo)識符 ',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;
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。