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