Image 如何在FireMonkey中存储图像?

Image 如何在FireMonkey中存储图像?,image,delphi,firemonkey,Image,Delphi,Firemonkey,在VCL中,我有ImageList来存储图像。FireMonkey中没有ImageList控件。如何将图像存储在FireMonkey中以备将来使用?在表单上放置一个TPopupMenu,添加一些菜单项,并为每个tmenue项指定TBitmap。然后可以使用以下表达式访问位图: PopupMenu1.Items[index].Bitmap 或 在表单上放置一个TPopupMenu,添加一些菜单项,并为每个Tmenu项指定TBitmap。然后可以使用以下表达式访问位图: PopupMenu1.It

在VCL中,我有
ImageList
来存储图像。FireMonkey中没有
ImageList
控件。如何将图像存储在FireMonkey中以备将来使用?

在表单上放置一个TPopupMenu,添加一些菜单项,并为每个tmenue项指定TBitmap。然后可以使用以下表达式访问位图:

PopupMenu1.Items[index].Bitmap


在表单上放置一个TPopupMenu,添加一些菜单项,并为每个Tmenu项指定TBitmap。然后可以使用以下表达式访问位图:

PopupMenu1.Items[index].Bitmap


通过
Project>Resources and images
将图像添加为资源通过
Project>Resources and images
将图像添加为资源在FireMonkey(XE4)中添加图像

然后访问它:

procedure TForm1.Button1Click(Sender: TObject);
var
  InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, 'MyPng', RT_RCDATA);
  try
    Image1.Bitmap.LoadFromStream(InStream);
  finally
    InStream.Free;
  end;
end;

感谢Peter Vonča在FireMonkey(XE4)中添加图像

然后访问它:

procedure TForm1.Button1Click(Sender: TObject);
var
  InStream: TResourceStream;
begin
  InStream := TResourceStream.Create(HInstance, 'MyPng', RT_RCDATA);
  try
    Image1.Bitmap.LoadFromStream(InStream);
  finally
    InStream.Free;
  end;
end;

多亏了Peter Vonča

因为Delphi Android中没有ImageList,所以您必须:

  • 将图像添加到项目中

    项目->资源和图像

  • 将“资源和图像”中的图像删除为ResourceTypeRCDATA

  • 添加以下步骤:

  • ->

    然后加载图像,例如:

    var i : nativeint;
    begin
      i := 1;      
      load_image_from_resource(Image1, 'Bitmap_' + inttostr(i));
    end;
    

    因为Delphi Android中没有ImageList,所以您必须:

  • 将图像添加到项目中

    项目->资源和图像

  • 将“资源和图像”中的图像删除为ResourceTypeRCDATA

  • 添加以下步骤:

  • ->

    然后加载图像,例如:

    var i : nativeint;
    begin
      i := 1;      
      load_image_from_resource(Image1, 'Bitmap_' + inttostr(i));
    end;
    


    来自世界各地。

    对于现在看这个问题的人来说,因为Delphi XE8 FireMonkey有TImageList组件

    对于现在看这个问题的人来说,因为Delphi XE8 FireMonkey有TImageList组件

    谁说了弹出菜单的事?您确定您的答案与FMX有关吗?目标是将图像存储在资源中。将图像指定给TMenuItem的位图属性时,位图将存储在可执行文件的资源中。它更容易从资源中访问。如果没有ImageList,应该怎么做?有创意。谁说的弹出菜单?您确定您的答案与FMX有关吗?目标是将图像存储在资源中。将图像指定给TMenuItem的位图属性时,位图将存储在可执行文件的资源中。它更容易从资源中访问。如果没有ImageList,应该怎么做?要有创意。我很高兴你发现我的答案很有用,通常适当的步骤是接受解决你问题的答案。关于你的答案,问题不是关于如何访问资源,最好还是继续讨论这个话题。我很高兴你发现我的答案很有用,通常适当的步骤是接受解决你问题的答案。关于你的回答,问题不是关于如何访问资源,最好还是围绕主题。根据克里斯·罗利斯顿的文章,你不是要用样式来做这件事吗?@DavidHeffernan,克里斯的文章对这个问题很有帮助。这篇文章展示了一种可能的FMX解决方案,它可以解决我们通常期望Timagelist组件与其他使用它的控件一起使用时出现的行为,例如更改图像索引以区分工具栏上的用户交互速度按钮(热按钮、按下按钮、聚焦按钮等)。在这里,唯一的问题是如何存储图像供以后使用。这是一个非常短视的观点。图像列表允许共享图像。在FMX中,风格起作用。嗯,是的,我只是简单地总结了我认为这篇文章是关于什么的。这不是一个关于更改控件外观的问题,所以我仍然不知道您为什么认为这篇文章在这里很重要。Chris文章的标题是如何在FireMonkey项目中没有图像列表的情况下生存。这似乎与此有关。克里斯对FMX了解很多。而且它与VCL非常不同。根据克里斯·罗利斯顿(Chris Rolliston)的文章,你不打算在风格上这样做吗?@DavidHeffernan,克里斯的文章对这个问题很有帮助。这篇文章展示了一种可能的FMX解决方案,它可以解决我们通常期望Timagelist组件与其他使用它的控件一起使用时出现的行为,例如更改图像索引以区分工具栏上的用户交互速度按钮(热按钮、按下按钮、聚焦按钮等)。在这里,唯一的问题是如何存储图像供以后使用。这是一个非常短视的观点。图像列表允许共享图像。在FMX中,风格起作用。嗯,是的,我只是简单地总结了我认为这篇文章是关于什么的。这不是一个关于更改控件外观的问题,所以我仍然不知道您为什么认为这篇文章在这里很重要。Chris文章的标题是如何在FireMonkey项目中没有图像列表的情况下生存。这似乎与此有关。克里斯对FMX了解很多。它与VCL非常不同。