如何在 Firemonkey 中拉伸图像?

How to stretch image in Firemonkey?

我想将图像的大小调整为 64 * 64 的预定义位图,而不考虑其当前尺寸和纵横比。我试过 Bitmap.ReSize 但这会保持纵横比。我尝试 TImage 并将 WrapMode 设置为 iwStretch。这在一定程度上起作用,因为它确实按照我的需要重新缩放图像,但我找不到从 TImage 中获取该图像的方法。 TImageBitmap 属性 仍然包含原始位图。

有人知道如何从屏幕上显示的 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 位图并同时根据 srctrg 矩形调整图像大小。