【问题标题】:How to store images in FireMonkey?如何在 FireMonkey 中存储图像?
【发布时间】:2013-08-27 22:14:29
【问题描述】:

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

【问题讨论】:

标签: image delphi firemonkey


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    因为在 Delphi Android 中没有 ImageList,你必须:

    1. 将您的图片添加到您的项目中

      项目 -> 资源和图片

    2. 将 'Resources and Images' 中的图像删除为 ResourceType RCDATA

    3. 添加此过程:

    ->

    procedure TForm1.load_image_from_resource(var Im1: Timage; res_name: String);
    var InStream: TResourceStream;
    begin
      InStream := TResourceStream.Create(HInstance, res_name, RT_RCDATA);
      try
        Im1.Bitmap.LoadFromStream(InStream);
      finally
        InStream.Free;
      end;
    end
    

    然后加载您的图像,例如:

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

    来自世界各地。

    【讨论】:

      【解决方案3】:

      在 FireMonkey (XE4) 中添加图像

      Project -> Resources and Images
      

      然后访问它:

      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;
      

      感谢彼得·冯卡

      【讨论】:

      • 很高兴您发现我的回答很有用,通常适当的步骤是接受解决您问题的答案。关于您的回答,问题不在于如何访问资源,最好保持主题。
      【解决方案4】:

      通过Project > Resources and Images将您的图片添加为资源。

      【讨论】:

      • 按照 Chris Rolliston 的文章,你不是打算用样式来做这个吗?
      • @DavidHeffernan,Chris 的文章与这个问题无关。本文展示了一个可能的 FMX 解决方案,用于解决我们通常期望 Timagelist 组件与其他使用它的控件一起使用时的行为,例如更改图像索引以区分工具栏速度按钮上的用户交互(热、按下、焦点... ) 等等... 。在这里,唯一的问题是如何存储图像以备后用。
      • 这是一个非常短视的观点。图像列表允许共享图像。在 FMX 中,样式服务于目的。
      • 嗯,是的,我只是在总结我认为这篇文章的内容。这不是关于更改控件外观的问题,所以我仍然不知道您为什么认为这篇文章在这里很重要。
      • Chris 文章的标题是如何在 FireMonkey 项目中没有图像列表的情况下生存。在这里似乎很贴切。克里斯对 FMX 了解很多。而且它与 VCL 有很大的不同。
      【解决方案5】:

      在表单上放置一个 TPopupMenu 并添加一些菜单项并分配每个 TMenuItem 的 TBitmap。然后你可以用这个表达式访问位图:

      PopupMenu1.Items[index].Bitmap
      

      MenuItem1.Bitmap
      MenuItem2.Bitmap
      ...
      

      【讨论】:

      • 谁说过弹出菜单?您确定您的回答与 FMX 有关吗?
      • 目标是将图像存储在资源中。当您将图像分配给 TMenuItem 的 Bitmap 属性时,位图将存储在可执行文件的资源中。它更容易从资源中访问。在没有 ImageList 的情况下应该怎么做?要有创意。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2012-11-15
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      相关资源
      最近更新 更多