Странные аргументы в UIColor colorWithRed: зеленый: синий: альфа: - PullRequest
2 голосов
/ 12 апреля 2011

При проверке этого метода я ожидал, что красный, зеленый и синий будут в диапазоне 0-255.Вместо этого это в 0-1.

Я единственный, кто думает, что это странно?

Есть ли какая-либо причина не использовать более распространенные значения 0-255 для RGB или даже шестнадцатеричные числа (как в html)?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

На мой взгляд, это не странно.Уровни 0-255 и 0,0-1,0 широко используются на разных платформах.Вы всегда можете преобразовать это, используя что-то вроде этого:

#define FLOAT_COLOR_VALUE(n) (n)/255.0
1 голос
/ 09 января 2012

Причина, по которой иногда значения RGB представлены в виде значений с плавающей точкой, а не от 0 до 255, заключается в том, что от 0 до 255 предполагает, что вы используете 8 битов для представления каждого цветового компонента, и, следовательно, для каждого цвета в буферах кадров необходимо использовать 24 бита. Это может быть не так, если вы используете дисплеи, которые поддерживают только 256 цветов или более 16 миллионов и т. Д. В теории тогда может быть бесконечное количество оттенков красного, зеленого или синего. Количество бит, которое вы используете для их представления, зависит от того, насколько точно вам нужно представлять цвет, и сколько памяти у вас на видеокартах для представления изображений и т. Д. Для многих случаев от 0 до 255 хорошо. Но есть другой мир, где это не очень хорошо, и для этих устройств / требований точного рендеринга числа с плавающей запятой обеспечивают столь необходимую альтернативу.

...