Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Растяжка изображений в Firemonkey: сохранение пропорций до 64x64 пикселей в TImage

Delphi , Графика и Игры , Изображения

Работа с графическими изображениями в среде разработки Firemonkey может включать в себя различные задачи, в том числе и необходимость изменения размеров изображений. Вопрос, который возник у разработчика, заключался в том, чтобы изменить размеры изображения до заранее определенных размеров экрана в 64x64 пикселей, не сохраняя при этом соотношение сторон исходного изображения. Попытки использовать метод Bitmap.ReSize привели к сохранению соотношения сторон, а использование объекта TImage с установкой свойства WrapMode на iwStretch позволило растянуть изображение, но не дало возможность извлечь измененное изображение из TImage.

Решение проблемы

Для решения поставленной задачи разработчику был предложен альтернативный способ растяжки изображения, который не использует TImage. Предложенный код на Object Pascal (Delphi) создает два экземпляра класса TBitmap для исходного и целевого изображений, задает размеры исходного прямоугольника src и целевого прямоугольника trg, а затем с помощью метода Canvas.DrawBitmap и масштабирует изображение до необходимых размеров.

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;

В этом примере кода создаются два экземпляра битмапов: bmpA загружается из файла, а bmpB создается с заданными размерами 64x64 пикселей. Затем через контекст рисования Canvas исходное изображение растягивается и копируется в целевой битмап. Измененное изображение сохраняется в файл для дальнейшего использования.

Выводы

Предложенный код решает поставленную задачу: растяжка изображения до фиксированных размеров, при этом не сохраняя соотношение сторон исходного изображения. Разработчик, столкнувшийся с проблемой, подтвердил эффективность данного решения, отметив, что предыдущие попытки использовать TImage были неудачными, и данный метод позволяет избежать этой проблемы.

Использование данного подхода особенно актуально для разработчиков, работающих с Firemonkey и сталкивающихся с необходимостью изменения размеров изображений в своих приложениях.

Создано по материалам из источника по ссылке.

Разработчик сталкивается с необходимостью изменить размеры изображения в Firemonkey до 64x64 пикселей, сохраняя пропорции, и решает проблему с помощью создания битмапов и их масштабирования.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Изображения ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-20 22:57:18/0.0022971630096436/0