![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с код. цвета
MSergey © (2002-05-22 00:14:00)В Windows при использовании 32-разрядных битмапов пиксель занимает 4 байта т.е. тип Integer. Вопрос: Почему четыре? Ведь в функцию RGB передаёшь всего 3. Как обратно преобразовать цвет на состовляющие R, G, B?
p^Zmei (2002-06-24 13:29:00) [1]Просто для информации:
Бывают два разных типа 32-х битного цвета
(стандартных) - ето RG*B и RGBA.
Первый: 24 и 32-х битный цвет - ето как 15 и 16
битный, то есть на синию и красную составляющую
по 10 бит, а на зеленую 12 (потому шта ее глаз
лучше воспринимает).
Второй: Red-Green-Blue-Alpha, где последний байт-
прозрачность.(В ХР часто используется для WS_EX_LAYARED).
MSergey (2002-05-22 15:37:00) [2]Спасибо, всё получилось.
KilkennyCat (2002-05-22 06:37:00) [3]я не помню, почему там первый байт стоит, возможно, нужен как резерв для вычислений двух цветов (типа белый плюс белый)
а вот с функцией елементарно. Достаточно проговорить по-англицки:
"Цвет в КГЗ"! и тут же получим:
function ColorToRGB(Color: TColor): Longint;
а чтоб выдрать цвета:
GetRValue(то, что получили вышенаписанной функцией)
GetGValue()
GetBValue()
A чтоб снова цвет получить:
COLOR := RGB(R,G,B);
А еще есть ColorToIdent, ColorToString ...