Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

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

// изменение размера области вывода иллюстрации
// пропорционально размеру иллюстрации
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 вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ресайз 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 14:57
Как уменьшить картинку быстро но без изменения палитры Joker_kpi Общие вопросы Delphi 2 04.06.2007 23:49




14:16.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru