![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить R,G,B из clBtnFace? [D6, WinXP]
ancara © (2004-06-11 10:49:00)Доброго времени суток, господа! Поскажите пожалуйста как из clBtnFace и ему подобных вытащить R, G и B значения. Посмотрел в Graphics.pas, там
COLOR_BTNFACE = 15;
и
clBtnFace = (COLOR_BTNFACE or $80000000);
Я так понимаю, 15 это индекс в сист. палитре, да? А как мне из этой палитры RGB получить?
Anatoly Podgoretsky (2004-06-11 12:06:00) [1]Не только, кроме этого первые три байта могут сожержать далеко не RGB
YurikGL (2004-06-11 11:41:00) [2]
> Anatoly Podgoretsky © (11.06.04 11:39) [5]
На один байт?
Anatoly Podgoretsky (2004-06-11 11:39:00) [3]ancara © (11.06.04 11:15) [4]
Да в этом, TColor это не RGB, а гораддо комплекснее.
ancara (2004-06-11 11:15:00) [4]
> Gero © (11.06.04 11:04) [3]
> Color := ColorToRGB(clBtnFace);
Так вот оно в чем дело! Все, арбайтет! Спасибо!
Gero (2004-06-11 11:04:00) [5]Color := ColorToRGB(clBtnFace);
R := GetRValue;
G := GetGValue;
B := GetBValue;
Считайте сами.
ancara (2004-06-11 11:02:00) [6]> YurikGL © (11.06.04 10:55) [1]
> GetRValue
Windows.pas:
function GetRValue(rgb: DWORD): Byte;
begin
Result := Byte(rgb);
end;
В качестве параметра rgb мы передаем clBtnFace, а он равен $8000000F, что получаем на выходе?
YurikGL (2004-06-11 10:55:00) [7]GetRValue
GetBValue
GerGValue