TimageList不包含名为GetBitmap的成员

时间:2016-03-13 14:46:08

标签: image listbox firemonkey imagelist

我想将照片从ImageList加载到TImage(移动应用程序,fmx)。 TImage是我的自定义列表框(LBItem.StylesData['myimage'])的一部分。标准方法是ImageList.GetBitmap()。但是,GetBitmap方法给了我一个错误:' TimageList does not contain a member named GetBitmap'。任何解释或替代方案?提前谢谢!

procedure TForm3.Button1Click(Sender: TObject);
var
    i         : Integer;
    LBItem    : TListBoxItem;
    Bitmap : TBitMap;
begin
    ListBox1.BeginUpdate;
    ListBox1.Items.Clear;
    Bitmap := TBitMap.Create;
    try
        for i := 0 to 3 do begin
            LBItem := TListBoxItem.Create(nil);
            LBItem.Parent := ListBox1;
            LBItem.StyleLookup := 'mystyle';
            LBItem.StylesData['mylabel'] := 'Some text...';
            //Bitmap.LoadFromFile('D:\Koala.jpg');
            ImageList1.GetBitmap(i, Bitmap);
            LBItem.StylesData['myimage']:= Bitmap;
        end;
    finally
        ListBox1.EndUpdate;
    end;
end;

3 个答案:

答案 0 :(得分:3)

假设你有一个名为Image1的TImage,一个名为ImageList1的TImageList,并且列表中至少有一个条目为1.0,称为Image1Hover,那么你可以使用以下示例加载"悬停图片" OnEnter Image1事件procedure TForm1.Image1MouseEnter(Sender: TObject); var Item: TCustomBitmapItem; Size: TSize; begin ImageList1.BitmapItemByName('Image1Hover', Item, Size); Image1.Bitmap := Item.MultiResBitmap.Bitmaps[1.0]; end;

ActorSelection

答案 1 :(得分:2)

此答案由fire-monkey.ru

翻译而来

使用ImageList1.Bitmap(Size, Index);size是物理像素,即我们独立考虑比例(此方法对画布的比例一无所知)。此功能选择最合适的图像大小。

所以,你的代码应该是这样的:

LBItem.StylesData['myimage'] := ImageList1.Bitmap(
  TSizeF.Create(myImageWidth * Canvas.Scale, myImageHeight * Canvas.Scale), 
  i);
// Not sure of the correctness of this assignment to 'myimage'

注1 在' ImageList1.Bitmap`中获得的所有位图都存储在imagelist缓存中。所以不要释放它们。

注意2 ListBox具有与ImageList交互的内部机制。尝试使用icon: TImage样式项和LBItem.ImageIndex属性,不加载位图。

答案 2 :(得分:0)

FMX 中,您不需要任何其他编码,如果要直接从TGlyph显示图像,请使用TImage而不是ImageList

示例:

Glyph1.ImageIndex := i;