Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TColor->радуга


Автор: Babandr 22.12.2007, 15:43
TColor имеет диапазон цвета от черного до белого (0x00000000 до 0x00ffffff). 
А если в приложении требуются цвета как в природе - от красного до фиолетового?
Подскажите преобразование, пожалуйста...

Автор: artsb 22.12.2007, 16:44
Если вы имеете ввиду, как узнать, то как вариант можно воспользоваться Photoshop'ом.
user posted image
В Photoshop'е RGB, а в Builder'е BGR. (по-моему), поэтому выбранный на рисунке цвет будет 0x003000ff.

Автор: JackYF 22.12.2007, 16:46
Цитата(Babandr @  22.12.2007,  15:43 Найти цитируемый пост)
Подскажите преобразование, пожалуйста... 

тебе поможет формирование цвета в HSV, и преобразование этого дела в RGB. Погугли по HSV->RGB, я встречал готовые формулы.

Автор: artsb 22.12.2007, 17:50
JackYF вы имели в виду HSB?

Автор: artsb 22.12.2007, 18:20
JackYF что-то я для Билдера не нашёл алгоритмов HSB->RGB. Если не тяжело дай ссылочку.

Автор: Babandr 22.12.2007, 19:50
задача примерно в следующем...
каждой точке в неком окне соответствует число от 0 до 100
в соответствии с этим числом цвет точки должен лежать в диапазоне от красного до фиолетового (видимый спектр). Зависимость должна быть линейной - если 0, то красный , если 100 - то фиолетовый...
ргб такого представления не дает - если линейно наращивать переменную типа TColor , то фигня получается...

Автор: artsb 22.12.2007, 20:02
Цитата(Babandr @  22.12.2007,  19:50 Найти цитируемый пост)
если 0, то красный , если 100 - то фиолетовый...

Вы в цикле рисуете? По какому условию рисуется красный, а по какому фиолетовый?

Автор: JackYF 23.12.2007, 01:14
Цитата(artsb @  22.12.2007,  17:50 Найти цитируемый пост)
JackYF вы имели в виду HSB? 

Да-да, верно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)