Как растянуть изображение в Firemonkey?

Я хотел бы изменить размер изображения до предопределенного растрового изображения 64 * 64, независимо от его текущих размеров и соотношения сторон. Я старался Bitmap.ReSize но это сохраняет соотношение сторон. Я старался TImage и установить WrapMode в iwStretch, Это работает в некоторой степени в том смысле, что оно действительно изменяет масштаб изображения так, как я хочу, но я не могу найти способ вытащить это изображение из TImage, Bitmap собственностью TImage по-прежнему содержит оригинальное растровое изображение.

Кто-нибудь знает, как получить изображение из TImage как это показано на экране? Или даже лучше: указать мне на функцию, которая делает такого рода изменения размера и растяжения? Если есть, я пропустил это.

Спасибо за ваше время.

1 ответ

Решение

Растянуть изображение в 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 прямоугольники.

Другие вопросы по тегам