标签:for 为什么 选择 必须 资源文件 var 工程文件 map load
自定义一个资源文件,Easy.rc,内容如下:
icon_app ICON app.ico
png_icon RCDATA app.png
png_icon1 png app.png
第一行是光标,不知道为什么,光标的大小总是32 * 32,而我在标题栏上显示的话,需要的是 16 *16的,所以,只能加载图片。
考虑到透明的问题,所以选择png格式的图片。
第二行是以资源数据的方式声明一个png的图片。
第三行是以自定义资源的方式声明一个png图片。
下面是从资源文件中加载该图片并显示
procedure TEasyForm.DrawIcon(bitmap: TBitmap); var png : TPngImage; rstream : TResourceStream; rect : TRect; begin png := TPngImage.Create; png.LoadFromResourceName(Hinstance, ‘png_icon‘); //rstream := TResourceStream.Create(Hinstance, ‘png_icon1‘, ‘png‘) ; //png.LoadFromStream(rstream); rect := TRect.Create(0, 0, 16, 16); bitmap.Canvas.Draw(0, 0, png); png.Free; end;
png.LoadFromResourceName(Hinstance, ‘png_icon‘);
这句是直接从资源文件加载png图片,注意,这个png图片必须要以 RCDATA 的方式声明。
rstream := TResourceStream.Create(Hinstance, ‘png_icon1‘, ‘png‘) ; png.LoadFromStream(rstream);
这是先从资源文件中加载为资源流,然后再从流中加载png图片,注意:如果是自定义的资源类型,则只能以这种方式加载资源。
下面是在工程文件中包含资源文件的声明方法,有了这样的声明,就会对资源文件(*.rc)自动进行编译,不需要自己手动编译了。
{$R *.res}
{$R ‘easy.res‘ ‘easy.rc‘}
标签:for 为什么 选择 必须 资源文件 var 工程文件 map load
原文地址:https://www.cnblogs.com/CipherLab/p/13195498.html