德尔福:无法打开.bmp文件



我正在尝试将图像加载到字符串网格单元格中

if CheckBox5.Checked = True then
begin
Ver :=  Ver + 1;
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('media/belgie_vlag.bmp');
Form3.StringGrid1.Canvas.StretchDraw
(Form3.StringGrid1.CellRect(Hor,Ver),Bitmap);
Bitmap.Free;
end;

当我运行应用程序时,显示一个错误,指出无法打开.bmp文件。有什么帮助吗?

最可能的问题是找不到该文件,因为您没有指定绝对路径。您应该始终使用绝对路径(例如,C:UsersAndreas RejbrandDesktopimage.png,而不是image.png(。

例如,如果media文件夹是可执行文件的同级文件夹,则绝对路径为ExtractFilePath(Application.ExeName) + 'mediabelgie_vlag.bmp'

然后,以下代码应正常工作:

if CheckBox5.Checked then
begin
Ver := Ver + 1;
Bitmap := TBitmap.Create;
try
Bitmap.LoadFromFile(ExtractFilePath(Application.ExeName) + 'mediabelgie_vlag.bmp');
Form3.StringGrid1.Canvas.StretchDraw
(Form3.StringGrid1.CellRect(Hor,Ver),Bitmap);
finally
Bitmap.Free;
end;
end;

请注意更多事项:

  1. 如上所述,您必须始终使用try..finally块保护资源。否则,在这种情况下,如果在加载或绘制图像时引发异常,则会泄漏图像对象,从而使应用程序占用内存并获得有限的生存期。

  2. 没有必要写if mybool = True then;if mybool then就够了。

  3. 应只在相应事件处理程序中的字符串网格中绘制。我无法判断您的代码放置在哪里,所以我不知道您的方式是否正确。

相关内容

  • 没有找到相关文章

最新更新