Как вы используете DwmGetColorizationColor
?
Документация говорит, что возвращает два значения:
0xAARRGGBB
, содержащий цвет, использованный для композиции стекла Вот цвет что мне нравится, тошнотворный зеленый
Вы можете заметить, что цвет зеленый, и полупрозрачная строка заголовка (на белом фоне) очень четко показывает цвет сопли:
Я пытаюсь получить цвет из Windows:
DwmGetColorizationColor(dwCcolorization, bIsOpaqueBlend);
И я получаю
dwColorization: 0x0D0A0F04
bIsOpaqueBlend: false
Согласно документации это значение имеет формат AARRGGBB
и поэтому содержит:
AA: 0x0D (13)
RR: 0x0A (10)
GG: 0x0F (15)
BB: 0x04 (4)
Это предположительно означает, что цвет - (10, 15, 4), с непрозрачностью ~ 5,1%.
Но если вы посмотрите на это значение RGB, оно совсем близко от моего желаемого сопли зеленого цвета. Вот
Вместо того, чтобы быть Лайм
зеленый, DwmGetColorizationColor
возвращает почти полностью прозрачный черный .
Итак, вопрос таков: Как получить цвет стекла в Windows Vista / 7?
Я пытался использовать DwmGetColorizationColor
, но это не очень хорошо работает.
Итак, это сводится к - DwmGetColorizationColor полностью непригоден для приложений, пытающихся применить текущий цвет на Непрозрачная поверхность.
Я люблю Скриншоты этого парня намного лучше, чем у меня. Используя его скриншоты в качестве шаблона, я сделал еще несколько ярких картинок:
Для двух последних скриншотов альфа-микросхема представляет собой настоящий частично прозрачный PNG, который сливается с фоном вашего браузера. Круто! (Я такой фанат)
Редактировать 2: Пришлось расставлять их в цвете радуги. (Я такой фанат)
Редактировать 3: Ну, теперь мне, конечно, нужно добавить Желтый.
Существует недокументированный экспорт из DwmApi.dll
в точке входа 137, которую мы назовем DwmGetColorizationParameters
:
HRESULT GetColorizationParameters_Undocumented(out DWMCOLORIZATIONPARAMS params);
struct DWMCOLORIZATIONPARAMS
{
public UInt32 ColorizationColor;
public UInt32 ColorizationAfterglow;
public UInt32 ColorizationColorBalance;
public UInt32 ColorizationAfterglowBalance;
public UInt32 ColorizationBlurBalance;
public UInt32 ColorizationGlassReflectionIntensity;
public UInt32 ColorizationOpaqueBlend;
}
Нас интересует первый параметр: ColorizationColor
.
Мы также можем прочитать значение из реестра:
HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM
ColorizationColor: REG_DWORD = 0x6614A600
Таким образом, вы выбрали яд для создания проблем с appcompat. Вы можете
Я давно хотел спросить этот вопрос уже больше года. я всегда знал, что невозможно ответить, и что единственный способ заставить кого-то обратить внимание - это сделать красочные скриншоты; разработчиков привлекают блестящие вещи. Но с другой стороны это означает, что мне пришлось приложить все усилия для изготовления приманок.
Цвет окраски! = Выбранный основной цвет. Я знаю, это вводит в заблуждение.
Но я сбит с толку. Вы позаимствовали изображение из моего сообщения под названием « Получение основного цвета Aero Glass для рендеринга непрозрачной поверхности ». Разве это не то, что ты хочешь делать? Я также указал в сообщении место в реестре, в котором хранится вся информация о цвете (HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ DWM) для целей поиска.
Отредактировано 26.08.
DwmGetColorizationColor (dwmapi.dll) возвращает «цвет раскраски», который представляет собой смесь различных цветов (включая выбранный вами основной цвет) и логики шейдера для достижения общего эффекта стекла.
Всю необходимую информацию о цветах можно найти в разделе реестра, указанном выше. Базовый цвет, цвета, используемые при смешивании, и результирующий цвет раскраски присутствуют.
(Вышеупомянутый ключ присутствует в Windows Vista и более поздних версиях.)
Как вам A0F040?
OP Edit: Вот как выглядит 0xA0F040 для меня: