我想将照片从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;
答案 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;