Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2017, 13:16   #1
artovbaz
 
Регистрация: 18.01.2014
Сообщений: 3
По умолчанию как уменьшить TImage без потери четкости

В Delphi XE7 Architecht добавляю на форму TImage. Загружаю в него png-картинку (картинка в виде раскраски). При уменьшении картинки через stretch линии становятся нечеткими, пунктирными, где-то исчезают. При увеличении картинки линии, соответственно, видно лучше. Как можно при уменьшении сохранить четкость линий?
Единственное решение, которое мне известно - использование картинки с уже заранее нужными первоначальными размерами, тогда четкость изображения не теряется.

Последний раз редактировалось artovbaz; 03.01.2017 в 13:33.
artovbaz вне форума Ответить с цитированием
Старый 09.01.2017, 19:30   #2
кусака44
 
Регистрация: 27.12.2016
Сообщений: 9
По умолчанию может это вам поможет

// изменение размера области вывода иллюстрации
// пропорционально размеру иллюстрации
Procedure Scalelmage;
var
pw, ph : integer; // размер иллюстрации
scaleX, scaleY : real; // масштаб по Х и Y
scale : real; // общий масштаб
begin
// иллюстрация уже загружена
// получим ее размеры
pw := Form1.Image1.Picture.Width;
ph := Form1.Image1.Picture.Height;
if pw > iw // ширина иллюстрации больше ширины компонента Image
then scaleX := iw/pw // нужно масштабировать
else scaleX := 1;
if ph > ih // высота иллюстрации больше высоты компонента
then scaleY := ih/ph // нужно масштабировать
else scaleY := 1;
// выберем наименьший коэффициент
if scaleX < scaleY
then scale := scaleX
else scale := scaleY;
// изменим размер области вывода иллюстрации
Form1.Image1.Height := Round(Form1.Image1.Picture.Height*s cale)
Form1.Image1.Width := Round(Form1.Image1.Picture.Width*sc ale);
// т. к. Strech = True и размер области пропорционален
// размеру картинки, то картинка масштабируется без искажений
end;
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат.
кусака44 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ресайз PNG без потери прозрачности RidDozZ Мультимедиа в Delphi 2 01.08.2012 13:40
Как переделать gif в jpeg без потери анимации Shadow78 Помощь студентам 10 24.09.2011 02:31
Объединение ячеек без потери значений Mopsusha Microsoft Office Excel 3 08.08.2011 06:51
Если остановился поток (TThread). Как перезапустить без потери памяти Zuzlan Общие вопросы Delphi 9 01.02.2011 13:57
Как уменьшить картинку быстро но без изменения палитры Joker_kpi Общие вопросы Delphi 2 04.06.2007 23:49