Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Бросить тень используя PNG с прозрачными областями


Автор: Majestio 10.6.2013, 15:45
Нужен алгоритм применения эффекта "тень" (а-ля Фотошоп) над непрозрачными областями PNG-картинки. Может кто видел хоть какие нить-реализации? В идеале - на Qt. Не в идеале - на любом языке.

Пример (светлосерый цвет - область прозрачности)

Есть:

user posted image

Нужно:

user posted image

Автор: Amp 10.6.2013, 15:52
Перекрасить непрозрачные области в нужный цвет (черный), применить к изображению какой-нибудь фильтр для размытия (например Гауссовый, с заданным радиусом), сдвинуть на пару пикселей, наложить сверху оригинальное изображение.

Автор: Majestio 10.6.2013, 16:01
Спасибо smile  Возьмку на заметочку! Даж http://habrahabr.ru/post/151157/ нашел.

Автор: bsa 10.6.2013, 17:54
что-то как-то сложно. проще подготовить заранее png изображение тени (левый нижний угол, горизонталь, правый нижний угол, вертикаль, правый верхний угол), а затем накладывать его на подложку при рисовании объекта. 

Автор: Majestio 10.6.2013, 18:51
Цитата(bsa @ 10.6.2013,  17:54)
что-то как-то сложно. проще подготовить заранее png изображение тени (левый нижний угол, горизонталь, правый нижний угол, вертикаль, правый верхний угол), а затем накладывать его на подложку при рисовании объекта.

не не не - еще трансформации (как минимум вращение) PNG предполагаются заранее, надо вычисляемую тень.

Автор: bsa 11.6.2013, 11:03
Majestio, ну тогда берешь свое изображение, приводишь его к черной маске, затем накладываешь с 30% прозрачностью три раза под изображение сдвигая перед накладыванием на 1 пиксел вправо и вниз.

Автор: Majestio 11.6.2013, 12:38
Цитата(bsa @ 11.6.2013,  11:03)
Majestio, ну тогда берешь свое изображение, приводишь его к черной маске, затем накладываешь с 30% прозрачностью три раза под изображение сдвигая перед накладыванием на 1 пиксел вправо и вниз.

Еще есть момент: нужно задавать "расстояние" тени и "радиус размытия". В сосоедних форумах уже дали наколочки - осталось реализовать. Но задача пока не сегодняшнего дня. Под конец проекта нужно будет рюшечки развешивать. Как реализую - обязательно поделюсь решением в надежде справедливой критики  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)