как се изчисляват стойностите на rgb в цвета и външния вид на диалоговите прозорци

В Windows 7 и Windows XP можете да намерите диалоговия прозорец „Цвят и облик на прозореца“ в „Контролен панел\Облик и персонализиране\Персонализиране». Промяната на "Color1" на елемента "3D-Border" ще доведе до промяна на следните записи в ключа на системния регистър

[HKEY_CURRENT_USER\Контролен панел\Цветове]

съдържащ получените rgb-стойности:

Група1 (същите стойности):

InactiveTitle, AppWorkspace, ButtonShadow, Graytext

Група 2 (същите стойности, различни от тези на група 1):

Лента за превъртане, ButtonHilight

Някой знае ли как се изчисляват тези стойности от дадените rgb-стойности на "Color1"? След търсене в мрежата без резултати и игра с много стойности не успях да намеря правдоподобен начин как да направя това. Някой знае ли правилата за това? Всяка помощ ще бъде оценена.

Качих някои демо стойности, систематично боравене със стойности в долните части. Също така текстов файл, сравняващ засегнатия ключ на системния регистър [HKEY_CURRENT_USER\Control Panel\Colors] след промяна на цвета на червено (255 0 0).


person quadpus    schedule 05.08.2013    source източник
comment
Трябва да има някаква числена връзка. Можете ли да дадете няколко примера за двойки „преди-след“? Това е или RGB пространство добавяне или умножение, или просто по-висока или по-ниска яркост в HSB пространство.   -  person Jongware    schedule 05.08.2013
comment
@Jongware: Може би не виждам дървесината за дърветата, не съм запознат по-специално с работата с rgb стойности. Качих някои от моите проучени данни   -  person quadpus    schedule 05.08.2013


Отговори (1)


Когато зададете цвета на „3D граница“ на червено, той промени цвета на „лицето на бутона“ на червен и интерполира този цвят, за да генерира различни по-светли и по-тъмни нюанси на червеното, които бяха използвани за задаване на някои свързани цветови стойности.

Въпросът е да създадете последователно изглеждаща тема с минимални усилия. Всичко, което трябва да направите, е да зададете "основния" цвят за 3D обекти и всички останали цветове се изчисляват автоматично, за да се гарантира, че обектите имат подходящия 3D външен вид.

Някои от тези стойности, като цветовете за осветяване и сенки, използвани за 3D обекти, не могат да се конфигурират директно от аплета на контролния панел. Те обаче могат да бъдат зададени ръчно в системния регистър и можете да извикате функцията SetSysColors, за да актуализирате работещите в момента приложения.

Защо смятате, че трябва да знаете действителния алгоритъм, който Windows използва? Какъв проблем се опитваш да решиш? За какво ще използвате тази информация?

Не си представям, че точният алгоритъм е документиран някъде. Кодът е част от операционната система поне от Windows 95.

person Cody Gray    schedule 05.08.2013
comment
Е, като си играех и проучвах възможностите на този диалогов прозорец за цвят и външен вид на прозореца, не очаквах да попадна на вътрешна тайна на Windows, фокусирах се по-скоро върху математическия контекст, отколкото върху разбирането на значението на създаването на цялата тази тема. благодаря ти, Коди Грей. - person quadpus; 07.08.2013