Обсуждение статьи "Изучаем класс CCanvas. Реализация прозрачности графических объектов" - страница 6

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А как? Сам-то экспериментировал?
Уфффф... все намного проще оказалось, фильтровать не надо перед сложением. Компоненты просто складываются пропорционально прозрачности и непрозрачности:
Alpha: 255 - верхний слой непрозрачен, 0 - полностью прозрачен.
lr, lg, lb - компоненты нижнего слоя.
ur, ug, ub - компоненты верхнего слоя.
Вот в терминале, черный фон, красный квадрат непрозрачный, на нем синий с прозрачностью 50% и потом желтый с прозрачностью 50%
Вот тоже самое в фотошопе:
Уфффф... все намного проще оказалось, фильтровать не надо перед сложением. Компоненты просто складываются пропорционально прозрачности и непрозрачности:
Alpha: 255 - верхний слой непрозрачен, 0 - полностью прозрачен.
lr, lg, lb - компоненты нижнего слоя.
ur, ug, ub - компоненты верхнего слоя.
доберусь до компа, попробую смешать две прозрачные картинки по этой флрмуле и посмотрим что получится. :))
А как можно две прозрачные смешивать? Сначала одна накладывается на фон, потом вторая накладывается на получившееся.
Вообще можно и две прозрачных сложить как-то, а потом ее накладывать на фон, но сейчас не об этом.
***
Вот что было бы особо интересно - разораться со всеми методами наложения слоев как в фотошопе.
Уфффф... все намного проще оказалось, фильтровать не надо перед сложением. Компоненты просто складываются пропорционально прозрачности и непрозрачности:
Alpha: 255 - верхний слой непрозрачен, 0 - полностью прозрачен.
lr, lg, lb - компоненты нижнего слоя.
ur, ug, ub - компоненты верхнего слоя.
Вот в терминале, черный фон, красный квадрат непрозрачный, на нем синий с прозрачностью 50% и потом желтый с прозрачностью 50%
Вот тоже самое в фотошопе:
не то ...
речь о том, что существует Alpha1 и Alpha2
так же нужно рассчитывать кроме новообразующих цветов смешения еще и новообразующую прозрачность.
Вы по сути повторили формулу автора статьи смешения прозрачного цвета с фоном:
result=backgraund*(1-alpha)+foreground
а у Вас:
result=backgraund*(1-alpha)+foreground*alpha
Ваш вариант правильный, а вот автор статьи накосячил в простой формуле, и прикольно, что Петр его благодарит за эту формулу :))
Ведь невооруженным глазом видно, что в формуле автора легко наступает переполнение uchar. Странно что за 4 года никто не увидел эту грубую ошибку.
вот здесь применяется алгоритм смешения друх прозрачных цветов:
вот здесь применяется алгоритм смешения друх прозрачных цветов:
А в каком месте прозрачность? Тени?
А в каком месте прозрачность? Тени?
Николай, мне сейчас не до цветов. Если в формуле есть ошибка, спасибо что подметил. Я сильно не проверял, - внедрил и забыл.
Хорошо бы твои знания и достижения в области канваса применить в чем то полезном. Подумай над этим.