如何通过代码访问图像的大小信息
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);
我正在使用 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);