Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как быстро и красиво отрисовать огромный битмап?


Страницы:   1 2 3

V ©   (2010-01-07 14:53:00) 

Добрый день. Возникла острейшая необходимость уместить в экран огромный битмап (до 15000*5000 пикс), который генерируется программой, в небольшое окошко.. ну в общем на этом битмапе изображена в масштабе 1 пикс/мм огромная жужа. Жужа эта чертится параметрически, параметров много, все завязано на углы, на габариты и тп, там есть текст, проставлены размеры.. В общем код отрисовки этого битмапа велик и что-либо в нем менять - может произойти нервный срыв.

Дело в том, что сама картинка рисуется достаточно быстро, но вот StretchDraw() в размеры моего окна (с сохранением пропорций) дают неадекватный результат, многие линии пропадают, текст как-то кусками стирается.. неприятно. Поэтому я немного погуглив наткнулся на модуль resample.pas, там несколько фильтров, картинка масштабируется в нужные мне размеры, все приятно, все красиво, но!!! лично меня не устраивает то что фильтр работает достаточно долго, приходится дожидаться результата 1-2 сек

Посему прошу совета, как мне быть, чтобы работало быстро и красиво одновременно?


Jeer   (2010-01-07 17:10:00) [41]


> мог бы подкинуть идею о "ресемплинге со сглаживанием", векторные
> редакторы такие векторные, но они рисуют себя на растре,
>


Ресемплинг со сглаживанием был создан для "семплинга" вверх, а не вниз. Ферштейн ?
И при чем тут ссылка на векторы ? Они могут рисовать на чем угодно, поскольку в основе не пиксели, а координаты опорных точек.


DVM   (2010-01-07 16:57:00) [42]

Тонкие линии толщиной менее пиксела обычно рисуются до некоторого предела другим цветом того же тона, хотя это вот уже непросто. Свой механизм вывода графических примитивов нужен. GDI так не умеет.


antonn   (2010-01-07 16:44:00) [43]

про резкость и четверть пиксела - вот о чем :)
мог бы подкинуть идею о "ресемплинге со сглаживанием", векторные редакторы такие векторные, но они рисуют себя на растре, и как-то уж получается рисовать у них "тонкие линии"


Jeer   (2010-01-07 16:36:00) [44]


> antonn ©   (07.01.10 15:45) [5]
> еще один оригинал %)


О чем это ?

Если человек не понимает, что масштабирование растра "вниз" (тем более - значительное) приводит к потере информации, то не мешает ему лишний раз напомнить об органе, ответственном за мышление.


antonn   (2010-01-07 15:45:00) [45]


> Включи серое вещество, он ж у тебя не просто так.

еще один оригинал %)

автор, попробуй установить STRETCH_HALFTONE для канвы
SetStretchBltMode(Canvas.Handle, STRETCH_HALFTONE);
оно включит ресайз со сглаживанием (можешь в яндексе спросить про бикубический ресайз, Lanczos/Mitchell), однако будет некоторое "мыло"


Jeer   (2010-01-07 15:41:00) [46]

Понимать как: v == Олег1963 ?

P.S.
С Рождеством, однако :)


Олег1963   (2010-01-07 15:29:00) [47]

Удалено модератором
Примечание: Ты чего это со своим плачем залез в чужую ветку?


Jeer   (2010-01-07 15:25:00) [48]


> автокады-компасы и тп как то рисуют и не запариваются при
> этом


Это векторные редакторы, а у тебя растр.
Что ж ты хочешь ? Ну была у тебя линия в 1 pix толщиной, ты сделал resample 1:4. Как, по твоему должна выглядеть эта линия на экране толщиной в 0.25 pix ?
Правильно, ее не будет видно.

Включи серое вещество, он ж у тебя не просто так.


V   (2010-01-07 15:04:00) [49]

Добавлю, битмап можно pf2Bit, .... автокады-компасы и тп как то рисуют и не запариваются при этом


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо