Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14041
Надо наложить битмап на битмап с указанием для одного из них степени пролупрозрачности. Так, как это делает фотошоп при наложении слоев, с пересчетом каждого пикселя.
Все что гуглится по ключевым словам ведет к методу, в котором указывается один цвет как полностью прозрачный, но мне это не надо.
Наверняка все уже давно написано, но что-то найти не могу.
7 ноя 18, 09:03    [21726095]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 8531
Flying-home,
Код покажи.
7 ноя 18, 10:00    [21726155]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14041
Соколинский Борис
Flying-home,
Код покажи.

Так кода еще нет. Но уже кое-что нашел с помощью хитрого запроса
"Delphi полупрозрачность -прозрачность"
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1243725965&n=7&p=1
Без GDI+, без OpenGL, без DirectX. Чисто средствами винды и процессора. Кажется, это то, что надо.
Осталось только убедиться, что функция AlphaBlend не окажется deprecated.
7 ноя 18, 10:28    [21726206]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 8531
Flying-home,
Она не deprecated, но с ней пому...чаться придется, ибо работает только с premult-картинками. Если скорость не критична, используй GDI+, ЕМНИП в демках от есть даже готовый пример.
7 ноя 18, 10:56    [21726268]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3448
Соколинский Борис
Flying-home,
Она не deprecated, но с ней пому...чаться придется, ибо работает только с premult-картинками. Если скорость не критична, используй GDI+, ЕМНИП в демках от есть даже готовый пример.
путаете, "с premult" layered-окна работают
7 ноя 18, 12:24    [21726522]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 8531
kealon(Ruslan),
Думаю, что не путаю, поскольку дофига времени на это потратил. Но на всякий случай себя проверил.
В режиме AlphaFormat пикселы на подложке нужно вручную умножать на альфу (делать premult), сама функция не хочет.
https://docs.microsoft.com/ru-ru/windows/desktop/api/wingdi/ns-wingdi-_blendfunction
Dst.Red = Src.Red + (1 - Src.Alpha) * Dst.Red
7 ноя 18, 13:05    [21726634]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14041
Как я понял из примера с приведенной ссылки, premult (24-битной) должна быть только та картинка, которую накладываешь. Меня это устраивает, поскольку я сам ее рисовать буду.
7 ноя 18, 13:32    [21726719]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14041
Тьфу, 4 бита на пиксель.
7 ноя 18, 13:35    [21726723]     Ответить | Цитировать Сообщить модератору
 Re: Правильная полупрозрачность (opacity) с указанием коэффициента  [new]
Flying-home
Member

Откуда: nas.vrostove.net
Сообщений: 14041
Тьфу, 4 байта на пиксель.
7 ноя 18, 13:50    [21726759]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить