Как вы используете DwmGetColorizationColor
?
Документация говорит, что возвращает два значения:
- 32-бит
0xAARRGGBB
содержит цвет, используемый для композиции стекла - логический параметр, который имеет значение true, "если цвет представляет собой непрозрачную смесь" ( независимо от того, что означает )
Вот цвет, который мне нравится, приятный зеленый оттенок:
Вы можете заметить, что цвет зеленый, и полупрозрачная строка заголовка (на белом фоне) очень четко показывает цвет сопли:
Я пытаюсь получить цвет из 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, оно не близко к желаемым зеленым соплям.Вот
- (10, 15, 4) с нулевой непрозрачностью (исходный цвет) и
- (10,15,4) с 5% непрозрачностью для белого / шахматной доскифон:
Вместо того, чтобы быть Lime
зеленым, DwmGetColorizationColor
возвращает почти полностью прозрачный черный .
Итак, вопрос: Как получить цвет стекла в Windows Vista / 7?
Я пытался использовать DwmGetColorizationColor
, но это не очень хорошо работает.
A человек с такой же проблемой, но с более блестящей блестящей картинкой , чтобы привлечь вас, белок:
Итак, он сводится к - 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.Вы можете
См. Также
Я хотел задать этот вопрос уже больше года.я всегда знал, что на это невозможно ответить, и что единственный способ заставить кого-то обратить внимание - это сделать красочные скриншоты;разработчиков привлекают блестящие вещи.Но с другой стороны это означает, что мне пришлось приложить все усилия для изготовления приманок.