我想更改图片加载到 Image1 - 从一个名为 1active.png 的第二个名为 1inactive.png ,反之亦然,点击Image1组件上的。
有什么办法吗?
答案 0 :(得分:5)
我假设您正在使用D2009,因为您可以在Image1中加载png文件。
如果您不想将图像与应用程序一起分发(如skamradt的解决方案所示),则必须将它们作为资源包含在内:
将png添加到项目中:使用菜单“项目|资源... ”并添加文件
相应地命名它们得到类似的东西:
1active.png RCData PngImage_Active
1inactive.png RCData PngImage_Inactive
在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;
答案 1 :(得分:3)
<强>成分强>:
<强>说明强>:
1)在表单声明的私有部分中创建一个布尔变量。对于此示例,请将此变量称为fImageActive。
private
fImageActive : boolean;
2)从表单设计器中,在表单上删除(或选择一个现有的)TImage组件并选择onClick事件,然后双击切换到编辑。然后添加以下代码:
fImageActive := not fImageActive;
if fImageActive then
Image1.Picture.LoadFromFile('1active.png')
else
Image1.Picture.LoadFromFile('1inactive.png')
3)从表单设计器中,找到picture属性,然后单击省略号为初学者加载1active.png文件。
4)单击表单,找到名为“OnCreate”的事件,双击并添加以下代码(这将设置初始状态):
fImageActive := true;
答案 2 :(得分:0)
您必须将两个图像加载到项目的资源文件中,并且在运行时,您可以从资源文件中读取图片并将其加载到OnClick上的图像中。我正在使用的Delphi版本(6)没有对PNG文件的本机支持,但我认为后一版本