问题描述
在构建我的应用程序时,我有一个预加载的timage显示;我分配给timage的Picture
属性的文件。
用户可以选择使用Image.Picture.LoadFromFile
加载其他外部图像文件,并且效果很好。
但是,如果要还原预加载的图像(在表单设计期间分配的图像),如何在不从单独文件中加载图像的情况下执行此操作?
object Image: timage
...
Picture.Data = { 0A544A7065674... }
但是,我的代码似乎无法访问Picture.Data
。
是否有某种方法可以将原始图像(内置在EXE文件中)重新加载?
我尝试了Image.Picture.LoadFromLazarusResource(...)
,但不确定将什么作为字符串放置(尝试了文件名),或者不确定这是否是正确的调用方法。
有什么想法吗?
解决方法
以下解决方案(我尝试了其中的一种变体)已在Lazarus论坛上提供给我,为完整性起见,我在此重复:
在Form的OnCreate事件中,将当前(设计时)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;