2 / 2 / 0
Регистрация: 24.01.2023
Сообщений: 8
1

Как заставить GDI+ не изменять цвет при наложении с альфаканалом

08.06.2023, 21:17. Показов 814. Ответов 0
Метки gdi+ (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно накладывать графику, генерированную через GDI+ на видеокадр в формате YUV.
Я наивно предполагал делать следующее:
- создать битмеп в 32 бита, то есть с альфа-каналом (pf32)
- подключить на него GDI+
- рисовать на нём
- попиксельно пересчитывать RGB в YUV и потом по значению альфа-канала микшировать получившееся значение с исходным значением в кадре
И вроде всё работает. Но. Дело в том, что если я что-то рисую с альфа-каналом, то предусмотрено два варианта наложения:
CompositingModeSourceCopy и CompositingModeSourceOver
Over мне совсем не подходит - он в соответствии со значением альфы смешивает подложку и рисуемое.
Copy вроде более подходящее - не смешивает подложку и рисуемое, а просто кладёт рисуемое. Но зачем-то при этом пересчитывает рисуемые цвета в соответствии с альфой. А мне нужны чистые цвета, которые я задал.
То есть если я задаю SolidBrush(MakeColor(0x80, 0xFF, 0xFF, 0xFF)) и рисую круг, то мне в выходной картинке нужен круг цвета 0x80FFFFFF. Вместо этого я получаю круг цвета 0x80808080, так как все FF умножаются на 80. И я искренне не понимаю - на черта - у меня же есть альфа канал - я буду делать наложение потом - зачем мне делать предумножение цветов?

Может есть какой-то способ получить ровно тот цвет, который я задал? Без микширования и предумножения?
Понятно, что можно это всё обойти с помощью костылей, но это как-то через одно место...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2023, 21:17
Ответы с готовыми решениями:

Убрать цвет фона при наложении картинки
Как убрать BackGround в Label чтобы не было видно задней стенки, а чисто текст на картинке?! 1...

Получить цвет пикселя с альфаканалом
Здравствуйте. Как получить цвет указанного пикселя с альфаканалом из файла png? Так...

Как изменять цвет при прокрутке header?
Как изменять цвет при прокрутке header? Например прокрутил я страницу,чтобы цвет при прокрутке был...

Почему при наложении текстуры изменяется цвет фигур без текстуры
Исходный вид, когда текстура не накладывалась (рис-1). После наложения текстуры на одну из фигур...

Как заставить в выпадающем меню на CSS при убирании курсора не менять цвет букв?
Доброго времени суток. столкнулся с небольшой досадной проблемкой. Меню горизонтальное с выпадом в...

0
08.06.2023, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2023, 21:17
Помогаю со студенческими работами здесь

Как заставить не затирать окном полученную графику в GDI?
Первый раз столкнулся с GDI и вот никак не могу допереть как заставить не затирать окном полученную...

При наведении изменять цвет текста в <font>
мне надо как-то сделать, чтобы при наведении менялся цвет текста в &lt;font&gt; Есть js функция color ...

Как заставить DNS сервер динамически изменять IP?
Здравствуйте. Как заставить DNS сервер на windows server 2003 с Active Directory динамически...

Как заставить DataGrid изменять источник данных?
Вообщем я везде облазил и читал много чего. Пытаюсь разобраться с ситуацией: Допустим есть: ...

Изменять цвет формы на красный при активированном CheckBox-е
Доброго времни суток! Нужна помощь с CheckBox,надо сделать так,чтобы когда ставилась галочка(т.е...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru