Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вычислять системные цвета? [D5, Win95/98, NT4, Win2k]


Oxy2 ©   (2001-12-28 14:25:00) 

Привет, всем!

У меня такой вопрс. Вот, например, при смене цветов в настройках екрана в Win она автоматически вычисляет цвета для отображения 3Д-объектов. Такие как, например, clBtnFace, clBtnHighlight, сl3DDkShadow, clBtnShadow (это все делфийские аналоги системных цветов). Вопрос состоит в том как мне самому вычислять их. Я пробовал выяснить систему вычислений, но ничего не получилось. Наверное она довольно сложная и простыми методами анализа ее не возьмешь. Может кто знает как это сделать или есть какая-то специфическая функция API. Помогите, мастера!


Oxy2   (2002-01-03 23:26:00) [1]

Всех с Новым Годом и Рождеством!

2Виктор Щербаков
Наконец то хоть кто то понял, что мне надо. А то, например, Dimka Maslov вообще на ASM перешел. :-)) Правда совет его вовсе не в тему. Вопрос надо было сначала прочитать.

>>Единственное, что я могу предложить - поизменяй цветовую схему >>и посмотри как будут изменяться значения вычисляемых системных >>цветов в реестре (HKEY_CURRENT_USER\Control Panel\Colors). >>Думаю, что алгоритм не очень сложный. Установи цвет рельефных >>объектов в (255, 255, 255) и посмотри чему равнцы цвета теней.
Я это уже пробовал - не получается. :-((
Алгоритм довольно сложный. Я об этом в вопросе уже писал.

Посему тема еще НЕ закрыта. Может есть еще предложения. Буду очень благодарен.


Виктор Щербаков   (2001-12-29 11:28:00) [2]

to Voron
Некоторые системные цвета (сl3DDkShadow, clBtnShadow)действительно вычисляются при настройке пользователем цветовой схемы. Это позволяет цветовой схеме выглядеть более логично. Oxy2 как раз и хочет узнать алгоритм этих вычислений.

to Oxy2
Единственное, что я могу предложить - поизменяй цветовую схему и посмотри как будут изменяться значения вычисляемых системных цветов в реестре (HKEY_CURRENT_USER\Control Panel\Colors). Думаю, что алгоритм не очень сложный. Установи цвет рельефных объектов в (255, 255, 255) и посмотри чему равнцы цвета теней.
Ну и т.д...


Dimka Maslov   (2001-12-29 10:43:00) [3]

function GetColor(Color: Integer): Integer;
asm
cmp eax, 0
jge @@10
and eax, 000000FFH
push eax
call GetSysColor
@@10:
end;


Voron   (2001-12-29 08:08:00) [4]

А помоему они вообще не вычисляются, а просто прописаны, не зря же они в реестр положены.


Oxy2   (2001-12-28 15:20:00) [5]

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


Виктор Щербаков   (2001-12-28 14:40:00) [6]

Значения этих цветов лежат в реестре (название ключа не помню).
Так что вычислять ничего не надо. Можно оттуда взять, а можно API функцией GetSysColor воспользоваться


Наверх

Титульная страница Поиск, карта сайта Написать письмо