我在一个单元中声明了一个类,它需要使用特定的位图.它在我的测试单元的DFM中声明如下:
object ImgTop: TImage
Left = 208
Top = 568
Width = 777
Height = 41
Picture.Data = {
0A544A504547496D616765A1CF0000FFD8FFE000104A46494600010101025802
[truncated]
};
Run Code Online (Sandbox Code Playgroud)
但在我的最后一个单元中,我不会有dfm.那么有什么方法可以在我的单位中声明它?
===
谢谢,我现在似乎已经开始工作,关于位图的大小限制很可怜:(这就是我所做的:
在我的文件夹中是这些文件:
imgleft.bmp
imgtop.bmp
Run Code Online (Sandbox Code Playgroud)
这是我的名为ScanOCRres.rc的资源文件:
1 RT_BITMAP "imgtop.bmp"
2 RT_BITMAP "imgleft.bmp"
Run Code Online (Sandbox Code Playgroud)
我已将其设置为使用C:\ Program Files\Borland\Delphi 7\bin\brcc32.exe自动执行
它生成了该文件
ScanOCRres.RES
Run Code Online (Sandbox Code Playgroud)
在我的单位,我有实施
{$R *.dfm}
{$R ScanOCRres.RES}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
var
abmp : TBitmap;
begin
abmp := TBitmap.create;
abmp.LoadFromResourceID(SysInit.HInstance, 1);
abmp.free;
end;
Run Code Online (Sandbox Code Playgroud)
我在LoadFromResourceID行上收到此错误消息:
项目Project1.exe引发了异常类EAccessViolation,并在模块"Project1.exe"中显示了"地址为0040A2C8的访问冲突"消息.读取地址00000001 '
你可以把它放在你的代码中,但使用起来不太方便.声明一个字节数组并定义图像的每个字节.祝你好运.要加载它,我将字节数组包装成a TMemoryStream然后使用LoadFromStream.
更好的方法是将图像存储在资源中.编写这样的资源脚本文件:
1 RT_BITMAP "foo.bmp"
Run Code Online (Sandbox Code Playgroud)
将.rc文件添加到Delphi项目中,它将自动链接到您的程序.在运行时,使用以下命令加载图像TBitmap.LoadFromResourceId:
var
b: TBitmap;
begin
b := TBitmap.Create;
b.LoadFromResourceId(SysInit.HInstance, 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1977 次 |
| 最近记录: |