我在一个单元中声明了一个类,它需要使用特定的位图。
它在我的测试单元的DFM中声明为:
object ImgTop: TImage
Left = 208
Top = 568
Width = 777
Height = 41
Picture.Data = {
0A544A504547496D616765A1CF0000FFD8FFE000104A46494600010101025802
[truncated]
};
但是在我的最后一个单元中,我将不会有dfm。
那么有什么方法可以在我的单位中声明它吗?
===
谢谢,我现在似乎可以正常使用了,关于位图的大小限制很可惜:(
这是我所做的:
这些文件在我的文件夹中:
imgleft.bmp
imgtop.bmp
这是我的资源文件,名为ScanOCRres.rc:
1 RT_BITMAP "imgtop.bmp"
2 RT_BITMAP "imgleft.bmp"
我将其设置为使用C:\ Program Files \ Borland \ Delphi 7 \ bin \ brcc32.exe自动执行
它生成了文件
ScanOCRres.RES
在我的单位里
实施
{$R *.dfm}
{$R ScanOCRres.RES}
这是我的代码:
var
abmp : TBitmap;
begin
abmp := TBitmap.create;
abmp.LoadFromResourceID(SysInit.HInstance, 1);
abmp.free;
end;
我在LoadFromResourceID行上收到此错误消息:
Project Project1.exe引发了异常类EAccessViolation,消息为“ Project1.exe”中的“地址0040A2C8处的访问冲突”。读取地址00000001'
最佳答案
您可以将其放入代码中,但使用起来并不方便。声明一个字节数组并定义图像的每个字节。祝您编辑顺利。要加载它,我将字节数组包装到TMemoryStream
中,然后使用LoadFromStream
。
更好的方法是将图像存储在资源中。编写如下的资源脚本文件:
1 RT_BITMAP "foo.bmp"
将该.rc文件添加到您的Delphi项目中,它将自动链接到您的程序。在运行时,用
TBitmap.LoadFromResourceId
加载图像:var
b: TBitmap;
begin
b := TBitmap.Create;
b.LoadFromResourceId(SysInit.HInstance, 1);
关于delphi - Delphi>是否可以在我的单元(不是dfm)中存储位图的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082502/