C++ Builder: конвертер картинок под нужный размер
Напишем небольшое учебное приложение для "пережатия" картинок BMP и JPG под экран Вашего любимого мобильного телефона.
Создав в C++ Builder новый проект, установим размеры клиентской области окна (ClientWidth
, ClientHeight
в свойствах формы) равными 240 и 320 пикселов соответственно, а также запретим изменение размеров окна приложения (BorderIcons->biMaximize = false
, BorderStyle = bsSingle
). Другие размеры окна потом можно будет установить из настроек.
Добавим на форму рисунок Image1
, установим ему свойства
Align=alClient
, Stretch=true
, AutoSize=true
. Это обеспечит автоматическое растяжение рисунка по текущему размеру окна формы. А вот свойством Proportional
(сохранение пропорций рисунка при масштабировании) будем управлять из отдельного окна настроек. Там же разрешим масштабировать рисунки к размерам от 128x128 до 960x800 пикселов.
Единственный "нетривиальный" момент в исходниках - как учесть при сохранении графического файла изменения, внесённые его масштабированием при выводе в Image1
. Проще всего это выполнить
следующим образом:
Graphics::TBitmap *FormImage = GetFormImage(); Image1->Picture->Assign (FormImage); Image1->Picture->SaveToFile(FileName);
Без первых двух строк оператор SaveToFile
сохранит рисунок именно в исходном размере, игнорируя масштабирование, выполненное при выводе в Image1
.
Обрабатывать BMP и JPEG единым кодом можно, только не забываем, что для работы с форматом JPEG к проекту подключается заголовочный файл
#include <jpeg.hpp>
Для GIF такой же "универсальной" библиотеки нет, разве что для некоторых версий Builder'а.
Вот скриншот приложения и архив с исполняемым файлом + исходниками.
Простейшая программа для масштабирования картинок (C++ Builder)
Скачать архив ZIP с приложением и исходниками на C++ Builder (311 Кб)
16.10.2013, 21:56 [16722 просмотра]