如何通过代码访问图像的大小信息

How access size information of a image via code

我正在使用 Delphi 10.1 Berlin,我需要创建一个图像并将其 Canvas 大小设置为等于位图大小。更具体地说,我想访问这个属性:

哪里说:"Sized by Image"。但是我不知道如何访问它,请帮忙! :-D

编辑:这是我正在使用的代码,如果你们需要更好地理解我想要实现的目标:

imgProdutoZoom := TImage.Create(rtFundoArredondadoZoom);
imgProdutoZoom.Parent := rtFundoArredondadoZoom;
imgProdutoZoom.Align := TAlignLayout.Client;
imgProdutoZoom.Bitmap.Assign(imgProduto.Bitmap);
imgProdutoZoom.WrapMode := TImageWrapMode.Fit;
imgProdutoZoom.Name := 'imgZoom'+ IntToStr(i);

我找到了这段代码:imgProdutoZoom.MultiResBitmap.SizeKind.Source; 但是控制台给我一个错误:'[dcc32 Error] MainFrm.pas(628): E2018 Record, object or class type required'

您没有显示 rtFundoArredondadoZoom 是什么,但我认为它是 TRectangle

当您设置

imgProdutoZoom.Parent := rtFundoArredondadoZoom;
imgProdutoZoom.Align := TAlignLayout.Client;

你要填满父区域(rtFundoArredondadoZoom)。但是,由于 TImage.WrapMode 默认情况下是 TImageWrapMode.Fit,图像保留其宽高比并且不会拉伸以填充父级。

现在,设置中的限制因素是 rtFundoArredondadoZoom 矩形,特别是它的高度。要以完整尺寸显示图像,您需要设置

rtFundoArredondadoZoom.Height := imgProdutoZoom.Bitmap.Height;

您有时可能还想设置矩形的宽度。

下图左侧显示了原始大小的图像,基本上使用您的代码在高度较小的矩形上显示了相同的图像

然后在矩形上应用高度设置后

您的代码相应更正为:

imgProdutoZoom := TImage.Create(rtFundoArredondadoZoom);
imgProdutoZoom.Parent := rtFundoArredondadoZoom;
imgProdutoZoom.Align := TAlignLayout.Client;
imgProdutoZoom.Bitmap.Assign(imgProduto.Bitmap);
// imgProdutoZoom.WrapMode := TImageWrapMode.Fit; // not needed
rtFundoArredondadoZoom.Height := imgProdutoZoom.Bitmap.Height; // add this
imgProdutoZoom.Name := 'imgZoom'+ IntToStr(i);