Алгоритм преобразования число [0;1] -> цвет RGB

User avatar
dot
Уже с Приветом
Posts: 4461
Joined: 17 Jun 2003 04:41

Алгоритм преобразования число [0;1] -> цвет RGB

Post by dot »

Собственно, проблема - как преобразовать число(x) на интервале [0;1] в цвет RGB чтобы при возрастании x brightness соотв. цвета тоже возрастала. Все это в VB.Net

С оттенками серого я вроде сделала уже, а теперь хочется тоже самое c цвеами в RGB сделать. Простым умножением не получается, т.к. у цвета 0x00ffff brightness выше чем у 0x010000
а класс Color имеет только метод .fromArgb()

Any ideas?
,,, ^. .^ ,,,
User avatar
CTAC_P
Уже с Приветом
Posts: 6789
Joined: 01 Jun 2001 09:01

Re: Алгоритм преобразования число [0;1] -> цвет RGB

Post by CTAC_P »

Яркость цветов RGB соотносится как 3:6:1 (грубо). Более точное соответствие можно найти узнав стандарт на Вашем устройстве.
Соответственно, яркость будет равна:
Y=0.3R + 0.6G + 0.1B.
Дальше уже решайте сами, какие цвета для какого уровня яркости использовать.
User avatar
dot
Уже с Приветом
Posts: 4461
Joined: 17 Jun 2003 04:41

Re: Алгоритм преобразования число [0;1] -> цвет RGB

Post by dot »

CTAC_P wrote:Y=0.3R + 0.6G + 0.1B.

Спасибо. А линка на описание модели HSB у вас случайно не найдется (что-то я вчера ничего толком не нашла на гугле :( )? Или формулы для расчета Hue & Saturation? :wink:
,,, ^. .^ ,,,
User avatar
CTAC_P
Уже с Приветом
Posts: 6789
Joined: 01 Jun 2001 09:01

Post by CTAC_P »

Увы, кроме гугля посоветовать больше ничего не могу. :pain1:
blanko27
Уже с Приветом
Posts: 2264
Joined: 17 Jun 2003 04:41
Location: Just like US

Post by blanko27 »

...а мы такой компанией, возьмем, да и припремся к Элис!
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Re: Алгоритм преобразования число [0;1] -> цвет RGB

Post by IA72 »

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
User avatar
dot
Уже с Приветом
Posts: 4461
Joined: 17 Jun 2003 04:41

Re: Алгоритм преобразования число [0;1] -> цвет RGB

Post by dot »

IA72 wrote: А в google не пытались смотреть? На codeproject отличные примеры из GDI+,
все уже написано до нас :)
http://www.codeproject.com/cs/media/csh ... ters11.asp

Пыталась, но наврено не по тем ключевым словам. Торможу, и уже который день :mrgreen: .

Вроде нашла какие-то примеры и по ним переписала, сейчас даже самой стыдно что спрашивала :oops: , так ка все настолько просто оказалось.

Спасибо за codeproject-линк - я не по нему делала, но ссылка действительно очень полезная. 8)
,,, ^. .^ ,,,
Victor
Уже с Приветом
Posts: 2107
Joined: 04 Mar 1999 10:01
Location: Gaithersburg, MD

Post by Victor »

Собственно, проблема - как преобразовать число(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

Return to “Вопросы и новости IT”