【问题标题】:How to change TImage programatically on TButton click?如何在按钮单击时以编程方式更改图像?
【发布时间】:2015-10-08 13:06:52
【问题描述】:

我需要从我的主窗体上的几个TImage 组件中更改图像。

  • 有哪些可能的方法可以以编程方式进行更改?

【问题讨论】:

  • 至少有人可以解释一下否决票吗?
  • 应该是什么资源图片?您的意思是从资源文件中更改TImage 图片?
  • 是的。为什么这么神秘?
  • 因为TImage 没有资源。无论如何,您可以在按钮 OnClick 事件中加载不同的图像资源,然后从资源中制作图像并将图像分配给 TImage Picture 属性
  • A TImage 是一个控件,它本身不是一个实际的图像。它的Picture 属性就是您要找的。改变这个资源的方法有很多,但是不知道来源,不知道你想要哪种方法。例如,您可以说Image1.Picture.LoadFromFile(MyFilename);,或者可能是Image1.Picture.Assign(MyGraphic); 或Image1.Picture.LoadFromStream(MyStream);,无论如何,这与单击按钮无关。

标签: image delphi firemonkey


【解决方案1】:

类似于以下内容,其中RCDATA 类型的资源被命名为JpgImage_1。

这里的资源应该通过$RESOURCE 指令链接到可执行文件。

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TStream;
begin
  if FindResource(HInstance, PChar('JpgImage_1'), RT_RCDATA) = 0 then
    Exit;

  stream := TResourceStream.Create(HInstance, 'JpgImage_1', RT_RCDATA);
  try
    Image1.Bitmap.LoadFromStream(stream);
  finally
    stream.Free;
  end;
end;

【讨论】:

  • 该问题被标记为 FireMonkey,但 TImage 在 FireMonkey 中没有 Picture 或 Picture.Graphic 属性,只有 Bitmap 属性。但是在VCL中,TImage.Picture.Bitmap只支持BMP图片,不支持JPG图片,因此需要Assign()一个TJPEGImage对象,但应该是Picture.Assign(jpg)而不是Picture.Bitmap.Assign(jpg)。
  • @RemyLebeau 你是对的:我以 VCL 形式进行了测试。我做了没有火的猴子!谢谢你指出我。答案已编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2012-07-11
相关资源
最近更新 更多