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



我在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,它获取图像的索引和请求的大小。

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

首先,考虑Uwe Raabe的回答,理解TImageCollection的目的。也许您只需要一个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);

一般情况下,你不应该使用这种方法,除非在一些非常特殊的情况下。

最新更新