Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: Bob on November 13, 2012, 10:40:50 PM
		
			
			- 
				Что из себя представляет код цвета Clickermann-а, к примеру цвет: 16435400, как его понять, в Paint.Net он соответствует RGB 200.200.250. Как из этого кода командами выбрать цвет R, G или B я знаю. Что это за формат? Почему в пограмме не используется прямое представление в RGB формате?
 Заранее спасибо.
 
- 
				Почитай в справке про COLORGEN и COLORR, COLORG, COLORB
 
 Цвет можно получить самим кликером. Наводишь мышь куда нужно и жмешь Alt+Q
 в редактор запишется клик с закоментированным цветом
 
 LCLICK(1109,139)  // 15523796
 теперь отсюда легко взять координаты и цвет пиксела
- 
				Спасибо за ответ. Но всё же, что это за цифра 16435400 (не RGB формат)? Почему она высвечивается в программе, а не привычное (ИМХО) RGB 200200250? В каком это виде, формате. 
 Заранее спасибо.
- 
				Это десятичный вид.
 Так проще.
 
 
- 
				ну если тебе оооочень интересно...
 цвет точки в 32 разрядной палитре образуется из насыщенности четырех каналов RGBA (A - альфа канал, прозрачность, в кликере не используется). каждый из этих каналов может принимать значения от 0 до 255. стандартный байт, 8 бит. 8 бит на четыре канала, отсюда собственно 32.
 
 32-разряда можно впихнуть в обычное число типа __int32, последовательно 4 байта. При этом старшие 8 бит будут содержать значение альфа канала. Потом идут синий, зеленый и самый младший байт занимает красный.
 
 нагляднее это было бы описать в 16-чном виде (почему вы думаете программисты любят HEX? это очень удобно). для перевода можно использовать калькулятор винды.
 
 на примере твоей картинки
 Dec: Alpha:0, Red:200 Green:200 Blue:250
 Hex: A:0x00 R:0xC8 G:0xC8 B:0xFA
 
 распихиваем в 32 разряда: 00FAC8C8
 переводим число FAC8C8 (первые нули не нужны) в десятичный вид и получаем 16435400
 
 как было сказано альфа канал практически не используется, поэтому палитра по факту 24 битная. однако нет такого типа стандартных данных, как 3 байтный. поэтому под 24 битную точку используется все то же 32 битное число __int32, что и обеспечивает совместимость без дополнительных преобразований
 
 можно было бы красиво преобразовывать число и в Hex (как в версиях 3.х) и даже в твой "RGB 200200250" но это дополнительные вычисления и расчеты, а значит задержки. а то что ты видишь сейчас это как раз самый прямой формат RGB просто в удобном виде для машины, но не для человека.
- 
				Очень интересно, спасибо. 
 Но какие задержки происходят при конвертации из хекса ???? Ведь какая разница, читать шестнадцатеричное число из строки, или десятеричное?
- 
				Спасибо за развёрнутый ответ.