在delhpi控件中如果用到了TBitBtn的话,可能我们需要直接将位图储存在控件中。具体做法是:
编辑一个文本文件,格式如下:
名称 Bitmap 文件名
存为扩展名为.rc的文件,如
btns.rc
backbmp Bitmap backbmp.bmp
注意,要将backbmp.bmp与btns.rc放置在同一文件夹下。
运行命令行:
brcc32.exe btns.rc
则会在该文件夹下生成btns.RES资源文件。
在控件的implementation下加上一行
{$R btns.RES}
//当然了,btns.RES文件要在对应的文件夹下
将位图加入到TBitBtn中:
BitBtn1.Glyph.LoadFromResourceName(Hinstance,'backbmp');
好了,看看结果吧。
但用这种方法有一个问题,就是当位图是前后重复的(一个为正常,另一个为Disabled状态位图)时候会造成整个图都被显示出来,而Enabled=false时的位图却是空的,如下图
因为Delphi的TBitBtn控件未对LoadFromResourceName方法做操作,导致位图未被其内置的TImageList拆分。要解决也简单,只要以赋值的方式操作其Glyph对象就行了。如下:
bmp:TBitmap;
...
bmp:= TBitmap.Create;
bmp.LoadFromResourceName(Hinstance,'backbmp');
BitBtn1.Glyph := bmp;
//好了吧

