我想将图像调整为64 * 64的预定义位图,无论其当前尺寸和宽高比如何。我尝试了Bitmap.ReSize
,但保持了宽高比。我尝试了TImage
并将WrapMode
设置为iwStretch
。这在一定程度上起作用,因为它确实按照我想要的方式重新缩放图像,但我找不到从TImage
中获取该图像的方法。 Bitmap
的{{1}}属性仍包含原始位图。
有人知道如何从屏幕上显示的TImage
获取图片吗?或者甚至更好:指向一个能够进行这种调整和拉伸的功能?如果有,我错过了。
感谢您的时间。
答案 0 :(得分:5)
要在Fmx
中拉伸图片,您无需使用TImage
。我知道你真的不想使用TImage
,解决方案如下:
var
bmpA, bmpB: TBitmap;
src, trg: TRectF;
begin
bmpA := nil;
bmpB := nil;
try
bmpA := TBitmap.Create;
bmpA.LoadFromFile('C:\tmp\Imgs\149265645.jpg');
bmpB:= TBitmap.Create;
bmpB.SetSize(64, 64);
src := RectF(0, 0, bmpA.Width, bmpA.Height);
trg := RectF(0, 0, 64, 64);
bmpB.Canvas.BeginScene;
bmpB.Canvas.DrawBitmap(bmpA, src, trg, 1);
bmpB.Canvas.EndScene;
bmpB.SaveToFile('C:\tmp\Imgs\149265645_take_two.bmp');
finally
bmpA.Free;
bmpB.Free;
end;
end;
您让bmpB.Canvas
绘制bmpA
位图,并根据src
和trg
矩形同时调整图片大小。