如何在 Delphi 11 中访问 TImageCollection 中的图像图片

how to access image picture in a TImageCollection in Delphi 11

我已经在 TImageCollection 中加载了几张图片。我想访问里面的图片以复制到快速报告等。 我试过这样的事情:

var
  vi_imagen :TImageCollectionSourceItem;
  bmp: tbitmap;
  MyPicture: TfrxPictureView;
begin
    vi_imagen := imagecollection.images[1].sourceimages[0];
    bmp.Assign(vi_imagen); 

    MyPicture.Picture.Assign(bmp); 
end;

我该怎么做? 谢谢

TImageCollection的主要目的是提供不同尺寸的图片。为此,它提供了检索特定大小图像的方法。最简单的就是GetBitmap,取图片的Index和请求的大小。

var
  bmp: TBitmap;
begin
  bmp := imagecollection.GetBitmap(1, 48, 48); // get 48 pixel 
  try
    MyPicture.Picture.Assign(bmp); 
  finally
    bmp.Free;
  end;
end;

首先,考虑 and understand the the purpose of TImageCollection. Maybe you simply need a TImageList 组件。

ImageCollection.GetBitmap() 首先查找完全匹配的尺寸。如果未找到,它会通过选择最佳来源根据请求的大小创建缩放位图。

如果您仍然需要通过索引访问特定的源图像,可以这样做:

// Assign to a TPicture instance
Image.Picture.Assign(ImageCollection.Images[X].SourceImages[Y].Image);
// Or assign to a TBitmap instance
Bitmap.Assign(ImageCollection.Images[X].SourceImages[Y].Image);

通常情况下,您不应该使用这种方法,除非在某些非常特殊的情况下。