![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвета [D6, XP]
Achpile © (2009-09-04 22:38:00)Люди, подскажите, плз, как можно разбить цвет типа TColor на RGB составляющие, чтоб перевести его в DWORD (TD3DColor)?
Anatoly Podgoretsky (2009-09-05 09:21:00) [1]Сообственно это означает написание некоторого количества функции, по одной на формат, вместо макросов и подавать на вход нужной ColorToRGB
Anatoly Podgoretsky (2009-09-05 09:19:00) [2]> KilkennyCat (05.09.2009 03:28:09) [9]
А согласно этому это никакое не RGB, а множество форматов.
Achpile (2009-09-05 06:52:00) [3]Спасибо вам всем огромное =)
KilkennyCat (2009-09-05 03:28:00) [4]таж фигня, только из DirectX
http://msdn.microsoft.com/en-us/library/bb172518%28VS.85%29.aspx
Германн (2009-09-05 02:33:00) [5]А что есть TD3DColor?
antonn (2009-09-05 02:06:00) [6]
> Kolan © (04.09.09 22:46) [2]
>
> А так — GetR, GetG, GetB по моему. Из Graphics.
GetRValue(), GetGValue() и GetBValue()
Омлет (2009-09-05 01:09:00) [7]> (X shl 24)
Это тоже можно убрать.. В TColor этот байт не задействован.
type
TRGBX = packed record
R, G, B, X: Byte;
end;
function Color2D3DColor(AColor: TColor): TD3DColor;
begin
with TRGBX(ColortoRGB(AColor)) do
Result := (R shl 16) or (G shl 8) or B;
end;
Омлет (2009-09-05 01:01:00) [8]Э.. название только поменяй на Color2D3DColor, я забыл )
Омлет (2009-09-05 00:59:00) [9]Вроде так:
type
TRGBX = packed record
R, G, B, X: Byte;
end;
function ContrastColor(AColor: TColor): TD3DColor;
begin
with TRGBX(ColortoRGB(AColor)) do
Result := (X shl 24) or (R shl 16) or (G shl 8) or B;
end;
Anatoly Podgoretsky (2009-09-04 22:57:00) [10]> Achpile (04.09.2009 22:38:00) [0]
ColorToRGB а затем любым путем выделить составляющие, например предложеным GetX
Kolan (2009-09-04 22:46:00) [11]А так — GetR, GetG, GetB по моему. Из Graphics.
Kolan (2009-09-04 22:45:00) [12]TColor — это число.