Author Topic: Цветовой код Clickermann  (Read 15546 times)

0 Members and 2 Guests are viewing this topic.

Bob

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Цветовой код Clickermann
« on: November 13, 2012, 10:40:50 PM »
Что из себя представляет код цвета Clickermann-а, к примеру цвет: 16435400, как его понять, в Paint.Net он соответствует RGB 200.200.250. Как из этого кода командами выбрать цвет R, G или B я знаю. Что это за формат? Почему в пограмме не используется прямое представление в RGB формате?
 Заранее спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Цветовой код Clickermann
« Reply #1 on: November 13, 2012, 11:17:17 PM »
Почитай в справке про COLORGEN и COLORR, COLORG, COLORB

Цвет можно получить самим кликером. Наводишь мышь куда нужно и жмешь Alt+Q
в редактор запишется клик с закоментированным цветом

Code: (clickermann) [Select]
LCLICK(1109,139)  // 15523796
теперь отсюда легко взять координаты и цвет пиксела

Bob

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Цветовой код Clickermann
« Reply #2 on: November 13, 2012, 11:41:24 PM »
Спасибо за ответ. Но всё же, что это за цифра 16435400 (не RGB формат)? Почему она высвечивается в программе, а не привычное (ИМХО) RGB 200200250? В каком это виде, формате.
Заранее спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Цветовой код Clickermann
« Reply #3 on: November 14, 2012, 12:31:03 AM »
Это десятичный вид.
Так проще.


Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Цветовой код Clickermann
« Reply #4 on: November 14, 2012, 08:20:09 AM »
ну если тебе оооочень интересно...
цвет точки в 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 просто в удобном виде для машины, но не для человека.
« Last Edit: November 14, 2012, 08:35:00 AM by Johnny »

Сергей

  • Активный участник
  • ***
  • Posts: 159
    • View Profile
Re: Цветовой код Clickermann
« Reply #5 on: November 14, 2012, 08:01:57 PM »
Очень интересно, спасибо.
Но какие задержки происходят при конвертации из хекса ???? Ведь какая разница, читать шестнадцатеричное число из строки, или десятеричное?
Отсутствую.

Bob

  • Зашел в гости
  • *
  • Posts: 17
    • View Profile
Re: Цветовой код Clickermann
« Reply #6 on: November 14, 2012, 11:44:10 PM »
Спасибо за развёрнутый ответ.