如何恢复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;
当我构建我的应用程序时,我有一个预加载的 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;