2013-08-25 81 views

回答

11

要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; 

感谢PeterVonča

+2

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

0

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

PopupMenu1.Items[index].Bitmap 

MenuItem1.Bitmap 
MenuItem2.Bitmap 
... 
+1

谁说过有关弹出菜单的任何内容?你确定你的答案与FMX有关吗? –

+1

目标是将图像存储在资源中。当您将图像分配给TMenuItem的Bitmap属性时,位图将存储在可执行文件的资源中。它更容易从资源访问。在没有ImageList的情况下应该做什么?有创意。 –

2

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

+0

按照Chris Rolliston的文章,你是不是想用风格来做这件事? –

+0

@DavidHeffernan,克里斯的这篇文章是对这个问题的回应。本文展示了一种可能的FMX解决方案,以解决我们通常期望从Timagelist组件获得的行为,与其他使用该组件的控件一起使用,例如更改图像索引以区分工具栏speedButton上的用户交互(热键,焦点... )等等。在这里,唯一的问题是如何存储图像供以后使用。 – Peter

+0

这是一个非常短视的观点。图像列表可以让图像共享。在FMX中,风格起到了这个作用。 –

4

因为在德尔福的Android没有ImageList中你必须:

  1. 添加一张图片到你的项目

    项目 - >资源和图像

  2. Delcare的形象在 '资源和图像' 作为的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 

然后用e.g来自世界各地的加载图片:

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

1

现在谁在看这个问题的人,因为德尔福XE8 FireMonkey具有的TImageList组件