Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Вниз

Как вычислять системные цвета? 


Oxy2   (2001-12-28 14:25) [0]

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

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



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

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



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

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



Voron   (2001-12-29 08:08) [3]

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



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

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



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

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

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



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

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

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

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

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




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.027 c
1-9215            forrest1              2002-02-15 09:57  2002.03.04  
Развернуть узел дерева с помощью клавиатуры


1-9218            avk                   2002-02-15 11:33  2002.03.04  
ListBox переход на следующую строку...


1-9229            s.dog                 2002-02-15 12:47  2002.03.04  
SOS !!! зачет сегодня, 2 маленьких вопроса.


1-9181            Johnmen               2002-02-14 12:20  2002.03.04  
Кто плотно общался с DBGridEh ?


1-9182            skiph                 2002-02-08 07:46  2002.03.04  
OLE