通过单击TImage组件更改图片 - Delphi

Luk*_*oud 0 delphi image click

我想通过单击 Image1组件将图片加载到Image1中 - 从一个名为1active.png的图片更改为第二个名为1inactive.png,反之亦然.

有什么办法吗?

Fra*_*ois 5

我假设你正在使用D2009,因为你可以在Image1中加载一个png文件.

如果您不想将图像与应用程序一起分发(如skamradt的解决方案所示),则必须将它们作为资源包含在内:
将png添加到项目中:使用菜单" Project | Resources ... "并添加文件.
相应地命名它们得到类似的东西:

 1active.png    RCData  PngImage_Active  
 1inactive.png  RCData  PngImage_Inactive  
Run Code Online (Sandbox Code Playgroud)

在Click事件中,您需要一些状态指示器来知道要显示哪个(如skamradt).
我使用Image1.hint来判断加载了哪个图像(快速和脏,用于演示目的).

使用下面的LoadImgFromPngResource proc加载适当的png图像:

procedure LoadImgFromPngResource(const AResName: string; DestImage: TImage);
var
  png: TPngImage;
begin
  png := TPngImage.Create;
  try
    png.LoadFromResourceName(HInstance, AResName);
    DestImage.Picture.Assign(png);
  finally
    png.Free;
  end;
end;

procedure TForm4.Image1Click(Sender: TObject);
begin
  if Image1.Hint <> 'Active' then
  begin
    LoadImgFromPngResource('PngImage_Active', Image1);
    Image1.Hint := 'Active';
  end
  else
  begin
    LoadImgFromPngResource('PngImage_Inactive', Image1);
    Image1.Hint := 'Inactive';
  end;
end;
Run Code Online (Sandbox Code Playgroud)