我尝试填充 TListView
当前代码
MyList.Items.Clear;
for I := 0 to List.Count-1 do
begin
Item:= MyList.Items.Add;
Item.Text:= List[i];
si:=ImageList.Source.Add;
src:='https://pixabay.com/static/uploads/photo/2015/10/01/21/39/background-image-967820_960_720.jpg';
ms:=LoadWebImage(src);
si. MultiResBitmap.LoadItemFromStream( ms,100);
Item.ImageIndex := i;
end;
图片加载无误
function LoadWebImage(url: string) : TMemoryStream;
var
idhttp : TIdHTTP;
begin
IdHTTP := TIdHTTP.Create(nil);
Result := TMemoryStream.Create;
try
idhttp.Get (url, Result);
Result.Position := 0;
finally
idhttp.Free;
end;
end;
结果我手动添加测试时只看到文本和一张图片
ItemAppeariance 设置为 ImageListItem
最佳答案
这是 TImageList 的简单助手
type
TImageListHelper = class helper for TImageList
function Add(aBitmap: TBitmap): integer;
end;
function TImageListHelper.Add(aBitmap: TBitmap): integer;
const
SCALE = 1;
var
vSource: TCustomSourceItem;
vBitmapItem: TCustomBitmapItem;
vDest: TCustomDestinationItem;
vLayer: TLayer;
begin
Result := -1;
if (aBitmap.Width = 0) or (aBitmap.Height = 0) then exit;
// add source bitmap
vSource := Source.Add;
vSource.MultiResBitmap.TransparentColor := TColorRec.Fuchsia;
vSource.MultiResBitmap.SizeKind := TSizeKind.Source;
vSource.MultiResBitmap.Width := Round(aBitmap.Width / SCALE);
vSource.MultiResBitmap.Height := Round(aBitmap.Height / SCALE);
vBitmapItem := vSource.MultiResBitmap.ItemByScale(SCALE, True, True);
if vBitmapItem = nil then
begin
vBitmapItem := vSource.MultiResBitmap.Add;
vBitmapItem.Scale := Scale;
end;
vBitmapItem.Bitmap.Assign(aBitmap);
vDest := Destination.Add;
vLayer := vDest.Layers.Add;
vLayer.SourceRect.Rect := TRectF.Create(TPoint.Zero, vSource.MultiResBitmap.Width,
vSource.MultiResBitmap.Height);
vLayer.Name := vSource.Name;
Result := vDest.Index;
end;
然后您可以轻松地在图像列表中添加图像:
ImageList1.Add(MyBitmap);
关于user-interface - 如何以编程方式将图像插入 FireMonkey 中的图像列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013186/