如何恢复TImage的默认图片?

How can I restore the default picture of a TImage?

当我构建我的应用程序时,我有一个预加载的 TImage 显示;我分配给 TImage 的文件 Picture 属性.

用户可以选择使用 Image.Picture.LoadFromFile 加载不同的外部图像文件,这很有效。

但是如果我想恢复预加载的图像(在表单设计期间分配的图像),我该如何在不从单独的文件加载它的情况下执行此操作?

我在相应的 FORM.LFM 文件中看到我预加载的图像在

object Image: TImage
...
Picture.Data = { 0A544A7065674... }

但是,Picture.Data 似乎无法通过我的代码访问。

有什么方法可以加载原始图像(内置在 EXE 文件中)?

我尝试了 Image.Picture.LoadFromLazarusResource(...) 但不确定将什么作为字符串(尝试了文件名)或者这是否是正确的调用方法。

有什么想法吗?

Lazarus 论坛上提供了以下解决方案(我尝试成功的一种变体),为了完整性,我在此重复:

在Form的OnCreate事件中,将当前的(design-time)TImage.Picture保存到一个单独的TPicture对象中,然后需要的时候可以Assign()返回到TImage.Picture .

private
  OriginalPicture: TPicture;
 
procedure TMyForm.FormCreate(Sender: TObject);
begin
  OriginalPicture := TPicture.Create;
  OriginalPicture.Assign(Image.Picture);
end;
 
procedure TMyForm.FormDestroy(Sender: TObject);
begin
  OriginalPicture.Free;
end;
 
procedure TMyForm.RestoreImage;
begin
  Image.Picture.Assign(OriginalPicture);
end;