|
|
  |
Помогите конвертировать цвет |
|
|
|
Jan 22 2011, 09:37
|
Знающий
   
Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131

|
Господа есть библиотека, в которой цвет закодирован следующим образом: #define COLOR(R,G,  ((1l<<15)|((uword)B<<10)|((uword)G<<5)|R) Вот у меня есть цвет в таком формате 0,0,13 (то есть синего там 13) А в фотошопе мне нужно нарисовать такой же цвет, но в виде 0x0000xx, где xx - синий цвет, то есть 24 битный формат. Как перевести?
|
|
|
|
|
Jan 22 2011, 09:43
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(-=Женек=- @ Jan 22 2011, 11:37)  Господа есть библиотека, в которой цвет закодирован следующим образом: #define COLOR(R,G,  ((1l<<15)|((uword)B<<10)|((uword)G<<5)|R) Вот у меня есть цвет в таком формате 0,0,13 (то есть синего там 13) А в фотошопе мне нужно нарисовать такой же цвет, но в виде 0x0000xx, где xx - синий цвет, то есть 24 битный формат. Как перевести? Просто в старшие биты поместите.
|
|
|
|
|
Jan 22 2011, 11:10
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата(-=Женек=- @ Jan 22 2011, 17:37)  ... #define COLOR(R,G,B) ((1l<<15)|((uword)B<<10)|((uword)G<<5)|R) Вот у меня есть цвет в таком формате 0,0,13 (то есть синего там 13) А в фотошопе мне нужно нарисовать такой же цвет, но в виде 0x0000xx, где xx - синий цвет, то есть 24 битный формат. Если я правильно понял, исходный цвет задаётся тремя числами R=0...31, G=0...31, B=0...31. Тогда для получения 0xRRGGBB можно сделать так ((uword)R<<19) | ((uword)G<<11) | ((uword)B<<3)
|
|
|
|
|
Jan 24 2011, 16:03
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(777777 @ Jan 24 2011, 16:20)  А что такое 1l<<15 это 1 приведенная к типу long и сдвинутая 15 раз влево.
|
|
|
|
|
Jan 25 2011, 05:56
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(777777 @ Jan 25 2011, 08:43)  В таком случае нужно писать 1L<<15 чтобы не спутать L с вертикальной чертой Я не понял, это вы мне говорите, кто-то вообще не понял что это обозначает.
|
|
|
|
|
Jan 25 2011, 09:35
|

Частый гость
 
Группа: Свой
Сообщений: 158
Регистрация: 15-10-07
Из: Й-Ола
Пользователь №: 31 376

|
Цитата(777777 @ Jan 25 2011, 09:17)  Да, я вообще не понял что это обозначает, потому что решил, что это вертикальная черта, а не маленькая L. Поэтому и предлагаю пользоваться большой L. Кстати, demiurg_spb написал вам о том же. Меня как-раз напрягает то что вы мне это говорите, говорите топикстартеру, я это и без вас знал.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|