Собственно, проблема - как преобразовать число(x) на интервале [0;1] в цвет RGB чтобы при возрастании x brightness соотв. цвета тоже возрастала. Все это в VB.Net
С оттенками серого я вроде сделала уже, а теперь хочется тоже самое c цвеами в RGB сделать. Простым умножением не получается, т.к. у цвета 0x00ffff brightness выше чем у 0x010000
а класс Color имеет только метод .fromArgb()
Any ideas?
Алгоритм преобразования число [0;1] -> цвет RGB
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
Алгоритм преобразования число [0;1] -> цвет RGB
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 6789
- Joined: 01 Jun 2001 09:01
Re: Алгоритм преобразования число [0;1] -> цвет RGB
Яркость цветов RGB соотносится как 3:6:1 (грубо). Более точное соответствие можно найти узнав стандарт на Вашем устройстве.
Соответственно, яркость будет равна:
Y=0.3R + 0.6G + 0.1B.
Дальше уже решайте сами, какие цвета для какого уровня яркости использовать.
Соответственно, яркость будет равна:
Y=0.3R + 0.6G + 0.1B.
Дальше уже решайте сами, какие цвета для какого уровня яркости использовать.
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
Re: Алгоритм преобразования число [0;1] -> цвет RGB
CTAC_P wrote:Y=0.3R + 0.6G + 0.1B.
Спасибо. А линка на описание модели HSB у вас случайно не найдется (что-то я вчера ничего толком не нашла на гугле )? Или формулы для расчета Hue & Saturation?
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 6789
- Joined: 01 Jun 2001 09:01
-
- Уже с Приветом
- Posts: 2264
- Joined: 17 Jun 2003 04:41
- Location: Just like US
Посмотрите у Мастера, в VB сами переведете:http://www.vbaccelerator.com/home/NET/Code/Controls/ListBar/Outlook_List_Bar/ListBar_Control_Source_zip_HLSRGB_cs.asp
...а мы такой компанией, возьмем, да и припремся к Элис!
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Re: Алгоритм преобразования число [0;1] -> цвет RGB
dot wrote:Собственно, проблема - как преобразовать число(x) на интервале [0;1] в цвет RGB чтобы при возрастании x brightness соотв. цвета тоже возрастала. Все это в VB.Net
С оттенками серого я вроде сделала уже, а теперь хочется тоже самое c цвеами в RGB сделать. Простым умножением не получается, т.к. у цвета 0x00ffff brightness выше чем у 0x010000
а класс Color имеет только метод .fromArgb()
Any ideas?
А в google не пытались смотреть? На codeproject отличные примеры из GDI+,
все уже написано до нас
http://www.codeproject.com/cs/media/csh ... ters11.asp
-
- Уже с Приветом
- Posts: 4461
- Joined: 17 Jun 2003 04:41
Re: Алгоритм преобразования число [0;1] -> цвет RGB
IA72 wrote: А в google не пытались смотреть? На codeproject отличные примеры из GDI+,
все уже написано до нас
http://www.codeproject.com/cs/media/csh ... ters11.asp
Пыталась, но наврено не по тем ключевым словам. Торможу, и уже который день .
Вроде нашла какие-то примеры и по ним переписала, сейчас даже самой стыдно что спрашивала , так ка все настолько просто оказалось.
Спасибо за codeproject-линк - я не по нему делала, но ссылка действительно очень полезная.
,,, ^. .^ ,,,
-
- Уже с Приветом
- Posts: 2107
- Joined: 04 Mar 1999 10:01
- Location: Gaithersburg, MD
Просто "яркость"(контрастность + яркость на самом деле) менять, не меняя самого цвета?Собственно, проблема - как преобразовать число(x) на интервале [0;1] в цвет RGB чтобы при возрастании x brightness соотв. цвета тоже возрастала. Все это в VB.Net
Тогда R, G и B компоненты умножать отдельно:
Цвет С, "яркость" A
B = C % 256
G = (C / 256) % 256
R = (C / 65563) % 256
A1 = A * MAX(B,G,R)/255
Result=R*65563*A1 + G*256*A1 + B*A1