如何在 Firemonkey 中拉伸图像?
How to stretch image in Firemonkey?
我想将图像的大小调整为 64 * 64 的预定义位图,而不考虑其当前尺寸和纵横比。我试过 Bitmap.ReSize
但这会保持纵横比。我尝试 TImage
并将 WrapMode
设置为 iwStretch
。这在一定程度上起作用,因为它确实按照我的需要重新缩放图像,但我找不到从 TImage
中获取该图像的方法。 TImage
的 Bitmap
属性 仍然包含原始位图。
有人知道如何从屏幕上显示的 TImage
中获取图像吗?或者甚至更好:给我指出一个可以进行这种调整大小和拉伸的功能?有的话我错过了
感谢您的宝贵时间。
要在 Fmx
中拉伸图像,您不需要使用 TImage
。我知道你不是很想用TImage
,解决方法如下:
var
bmpA, bmpB: TBitmap;
src, trg: TRectF;
begin
bmpA := nil;
bmpB := nil;
try
bmpA := TBitmap.Create;
bmpA.LoadFromFile('C:\tmp\Imgs9265645.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\Imgs9265645_take_two.bmp');
finally
bmpA.Free;
bmpB.Free;
end;
end;
您让 bmpB.Canvas
绘制 bmpA
位图并同时根据 src
和 trg
矩形调整图像大小。
我想将图像的大小调整为 64 * 64 的预定义位图,而不考虑其当前尺寸和纵横比。我试过 Bitmap.ReSize
但这会保持纵横比。我尝试 TImage
并将 WrapMode
设置为 iwStretch
。这在一定程度上起作用,因为它确实按照我的需要重新缩放图像,但我找不到从 TImage
中获取该图像的方法。 TImage
的 Bitmap
属性 仍然包含原始位图。
有人知道如何从屏幕上显示的 TImage
中获取图像吗?或者甚至更好:给我指出一个可以进行这种调整大小和拉伸的功能?有的话我错过了
感谢您的宝贵时间。
要在 Fmx
中拉伸图像,您不需要使用 TImage
。我知道你不是很想用TImage
,解决方法如下:
var
bmpA, bmpB: TBitmap;
src, trg: TRectF;
begin
bmpA := nil;
bmpB := nil;
try
bmpA := TBitmap.Create;
bmpA.LoadFromFile('C:\tmp\Imgs9265645.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\Imgs9265645_take_two.bmp');
finally
bmpA.Free;
bmpB.Free;
end;
end;
您让 bmpB.Canvas
绘制 bmpA
位图并同时根据 src
和 trg
矩形调整图像大小。