Цветовые и цветовые пространства

Устройства (дисплеи, принтеры, сканеры, камеры) не обрабатывают цвет тот же путь; у каждого есть его собственный диапазон цветов, которые устройство может произвести искренне. Цвет, произведенный на одном устройстве, не мог бы быть в состоянии быть произведенным на другом устройстве.

Чтобы работать с цветом эффективно и понять Кварц 2D функции для использования цветовых пространств и цвета, необходимо быть знакомы с терминологией, обсужденной в цвете Обзор управления. Тот документ обсуждает цветное восприятие, значения цвета, независящие от устройств и цветовые пространства устройства, проблема согласования цветов, представляя намерение, модули управления цветом и ColorSync.

В этой главе Вы изучите, как Кварц представляет цветовые и цветовые пространства, и каков альфа-компонент. Эта глава также обсуждает как к:

О цветовых и цветовых пространствах

Цвет в Кварце представлен рядом значений. Значения бессмысленны без цветового пространства, диктующего, как интерпретировать информацию о цвете. Например, значения в Таблице 4-1 все представляют цветной синий в полной интенсивности. Но не зная цветовое пространство или допустимый диапазон значений для каждого цветового пространства, у Вас нет способа знать, какой цвет каждый набор значений представляет.

Табличные 4-1  Значения цвета в различных цветовых пространствах

Значения

Цветовое пространство

Компоненты

240 градусов, 100%, 100%

HSB

Оттенок, насыщенность, яркость

0, 0, 1

RGB

Красный, зеленый, синий

1, 1, 0, 0

CMYK

Голубой, пурпурный, желтый, черный

1, 0, 0

BGR

Синий, зеленый, красный

При обеспечении неправильного цветового пространства можно получить довольно резкие различия, как показано на рисунке 4-1. Несмотря на то, что зеленый цвет интерпретируется то же в BGR и цветовых пространствах RGB, красные и синие значения зеркально отражаются.

Рисунок 4-1  , Применяющий BGR и цветовой профиль RGB к тому же изображению
Applying a BGR and an RGB color profile to the same image

Цветовые пространства могут иметь различные числа компонентов. В то время как цветовое пространство CMYK имеет четыре, три из цветовых пространств в таблице имеют три компонента. Диапазоны значений относительно того цветового пространства. Для большинства цветовых пространств значения цвета в Кварце колеблются от 0,0 до 1,0 с 1,0 означающей полной интенсивностью. Например, цветной синий в полной интенсивности, указанной в цветовом пространстве RGB в Кварце, имеет значения (0, 0, 1.0). В Кварце цвет также имеет альфа-значение, указывающее прозрачность цвета. Значения цвета в Таблице 4-1 не показывают альфа-значение.

Альфа-значение

Альфа-значение является параметром состояния графики, что Кварцевое использование, чтобы определить, как составить недавно нарисованные объекты к существующей странице. В полной интенсивности недавно нарисованные объекты непрозрачны. В нулевой интенсивности недавно нарисованные объекты невидимы. Рисунок 4-2 показывает пять больших прямоугольников, нарисованные альфа-значения использования 1,0, 0.75, 0.5, 0.1, и 0.0. Поскольку большой прямоугольник становится прозрачным, он представляет меньший, непрозрачный красный прямоугольник, нарисованный внизу.

Рисунок 4-2  сравнение больших прямоугольников нарисовал использование различных альфа-значений
A comparison of large rectangles painted using various alpha values

Можно сделать и объекты на странице и саму страницу прозрачными путем установки альфа-значения глобально в графическом контексте перед рисованием. Рисунок 4-3 сравнивает глобальную альфа-установку 0,5 со значением по умолчанию 1,0.

Рисунок 4-3  сравнение глобальных альфа-значений
A comparison of global alpha values

В нормальном режиме смешивания (который является значением по умолчанию для состояния графики) Кварц выполняет альфу, смешивающуюся путем объединения компонентов исходного цвета с компонентами целевого цвета с помощью формулы:

destination = (alpha * source) + (1 - alpha) * destination

где source один компонент нового цвета краски и destination один компонент цвета фона. Эта формула выполняется для каждой недавно нарисованной формы или изображения.

Для прозрачности объектов, набор альфа-значение к 1.0 чтобы указать, который возражает Вам, получение должно быть полностью непрозрачным; установите его в 0.0 указать, что недавно рисованные объекты полностью прозрачны. Альфа-значение между 0.0 и 1.0 указывает частично прозрачный объект. Можно предоставить альфа-значение как последний компонент цвета ко всем подпрограммам, принимающим цвета. Можно также установить глобальное альфа-значение с помощью CGContextSetAlpha функция. Следует иметь в виду, что при установке обоих Кварц умножает альфа-компонент цвета на глобальное альфа-значение.

Чтобы позволить самой странице быть полностью прозрачной, можно явно очистить альфа-канал графического контекста с помощью CGContextClearRect функция, пока графический контекст является контекстом растрового изображения или окном. Вы могли бы хотеть сделать это при создании маски прозрачности для значка, например, или сделать фон окна прозрачным.

Создавание цветовых пространств

Кварц поддерживает пробелы стандартного цвета, используемые системами управления цветом для независящих от устройств цветовых пространств, и также поддерживает универсальный, индексированный, и цветовые пространства образца. Независящие от устройств цветовые пространства представляют, раскрашивают путь, который является переносимым между устройствами. Они используются для обменов цветными данными от собственного цветового пространства одного устройства к собственному цветовому пространству другого устройства. Раскрашивает независящее от устройств цветовое пространство, появляются то же, когда выведено на экран на различных устройствах, до такой степени, что возможности устройства позволяют. По этой причине независящие от устройств цветовые пространства являются Вашим лучшим выбором для представления цвета.

Приложения, имеющие точные цветные требования, должны всегда использовать независящее от устройств цветовое пространство. Общее независимое от устройств цветовое пространство является универсальным цветовым пространством. Универсальные цветовые пространства позволяют операционной системе обеспечить лучшее цветовое пространство для Вашего приложения. Рисование к дисплею выглядит столь же хорошим как печать того же содержания к принтеру.

Создавание независящих от устройств цветовых пространств

Для создавания независящего от устройств цветового пространства Вы предоставляете Кварцу ссылочную белую точку, ссылочную черную точку и гамма значения для определенного устройства. Кварц использует эту информацию для преобразования цветов из пространства исходного цвета в цветовое пространство устройства вывода.

Независящие от устройств цветовые пространства, поддерживаемые Кварцем и функциями, создающими их:

  • L*a*b* является нелинейной трансформацией системы нотации цвета Манселла (система, указывающая цвета оттенком, значением и насыщенностью — или цветность — значения). Это цветовое пространство соответствия воспринятое цветовое различие для количественного расстояния в цвете располагает с интервалами. L* компонент представляет значение легкости,* компонент представляет значения от зеленого до красного, и b*, компонент представляет значения от синего до желтого. Это цветовое пространство разработано, чтобы подражать, как человеческий мозг декодирует цвет. Используйте функцию CGColorSpaceCreateLab.

  • ICC является цветовым пространством от цветового профиля ICC, как определено Международным Цветным Консорциумом. Профили ICC определяют палитру цветов, поддерживаемых устройством вместе с другими характеристиками устройства так, чтобы эта информация могла использоваться для точного преобразования цветового пространства одного устройства к цветовому пространству другого. Производитель устройства обычно обеспечивает профиль ICC. Некоторые цветные мониторы и принтеры содержат, встроил информацию о профиле ICC, также, как и некоторые растровые форматы, такие как TIFF. Используйте функцию CGColorSpaceCreateICCBased.

  • Калиброванный RGB является независящим от устройств цветовым пространством RGB, представляющим цвета относительно ссылочной белой точки, основывающейся на самом белом свету, который может быть сгенерирован устройством вывода. Используйте функцию CGColorSpaceCreateCalibratedRGB.

  • Калиброванный серый является независящим от устройств полутоновым цветовым пространством, представляющим цвета относительно ссылочной белой точки, основывающейся на самом белом свету, который может быть сгенерирован устройством вывода. Используйте функцию CGColorSpaceCreateCalibratedGray.

Создавание универсальных цветовых пространств

Универсальные цветовые пространства оставляют согласование цветов системе. Для большинства случаев результат приемлем. Несмотря на то, что имя может подразумевать иначе, каждое «универсальное» цветовое пространство — универсальный серый, универсальный RGB, и универсальный CMYK — является определенным независящим от устройств цветовым пространством.

Универсальные цветовые пространства просты в использовании; Вы не должны предоставлять информацию контрольной точки. Вы создаете универсальное цветовое пространство при помощи функции CGColorSpaceCreateWithName вместе с одной из следующих констант:

  • kCGColorSpaceGenericGray, который указывает универсальный серый, монохроматическое цветовое пространство, разрешающее спецификацию единственного значения в пределах от абсолютного черного цвета (оценивают 0.0) абсолютному белому (оценивают 1.0).

  • kCGColorSpaceGenericRGB, который указывает универсальный RGB, трехкомпонентное цветовое пространство (красный, зеленый, и синий), что модели путем отдельный пиксель составлены на цветном мониторе. Каждый компонент цветового пространства RGB располагается в значении от 0,0 (нулевая интенсивность) к 1,0 (полная интенсивность).

  • kCGColorSpaceGenericCMYK, который указывает универсальный CMYK, четырехкомпонентное цветовое пространство (голубой, пурпурный, желтый, и черный), что модели путь закатывают сборки краской во время печати. Каждый компонент диапазонов цветового пространства CMYK в значении от 0,0 (не поглощает цвет) к 1,0 (полностью поглощает цвет).

Создание цветовых пространств устройства

Цветовые пространства устройства прежде всего используются приложениями для iOS, потому что другие опции не доступны. В большинстве случаев приложение Mac OS X должно использовать универсальное цветовое пространство вместо того, чтобы создать цветовое пространство устройства. Однако некоторые Кварцевые подпрограммы ожидают изображения с цветовым пространством устройства. Например, если Вы вызываете CGImageCreateWithMask и укажите изображение как маску, изображение должно быть определено с помощью устройства серое цветовое пространство.

Вы создаете цветовое пространство устройства при помощи одной из следующих функций:

  • CGColorSpaceCreateDeviceGray для зависящего от устройств полутонового цветового пространства.

  • CGColorSpaceCreateDeviceRGB для зависящего от устройств цветового пространства RGB.

  • CGColorSpaceCreateDeviceCMYK для зависящего от устройств цветового пространства CMYK.

Создание индексируемого и цветовые пространства образца

Пробелы индексированного цвета содержат таблицу цветов максимум с 256 записями и пространство основного цвета, на котором отображаются записи таблицы цветов. Каждая запись в таблице цветов указывает один цвет в пространстве основного цвета. Используйте функцию CGColorSpaceCreateIndexed.

Цветовые пространства образца, обсужденные в Образцах, используются при рисовании образцами. Используйте функцию CGColorSpaceCreatePattern.

Установка и создание цветов

Кварц обеспечивает комплект функций для установки цвета заливки, цвета обводки, цветовых пространств и альфы. Каждый из этих цветных параметров применяется к состоянию графики, что означает, что когда-то установил, что установка остается в силе, пока не установлено в другое значение.

Цвет должен иметь связанное цветовое пространство. Иначе, Кварц не будет знать, как интерпретировать значения цвета. Далее, необходимо предоставить надлежащее цветовое пространство для места назначения получения. Сравните синий цвет заливки на левой стороне рисунка 4-4, который является цветом заливки CMYK с синим цветом, показанным на правой стороне, которая является цветом заливки RGB. При просмотре экранной версии этого документа Вы будете видеть значительные различия между цветами заливки. Цвета теоретически идентичны, но кажутся идентичными, только если цвет RGB используется для устройства RGB, и цвет CMYK используется для устройства CMYK.

Рисунок 4-4  цвет заливки CMYK и цвет заливки RGB
A CMYK fill color and an RGB stroke color

Можно использовать функции CGContextSetFillColorSpace и CGContextSetStrokeColorSpace для установки пробелов цвета заливки и цвета обводки, или можно использовать одну из функций удобства (перечисленный в Таблице 4-2), которые выбирают цвет для цветового пространства устройства.

Табличные 4-2  функции Настройки цветов

Функция

Используйте для выбирания цвета для

CGContextSetRGBStrokeColor

CGContextSetRGBFillColor

Устройство RGB. Во время ГЕНЕРАЦИИ PDF Кварц пишет цвета, как будто они были в соответствующем универсальном цветовом пространстве.

CGContextSetCMYKStrokeColor

CGContextSetCMYKFillColor

Устройство CMYK. (Остается устройством CMYK во время ГЕНЕРАЦИИ PDF.)

CGContextSetGrayStrokeColor

CGContextSetGrayFillColor

Серое устройство. Во время ГЕНЕРАЦИИ PDF Кварц пишет цвета, как будто они были в соответствующем универсальном цветовом пространстве.

CGContextSetStrokeColorWithColor

CGContextSetFillColorWithColor

Любое цветовое пространство; Вы предоставляете объект CGColor, указывающий цветовое пространство. Используйте эти функции для цветов, в которых Вы неоднократно нуждаетесь.

CGContextSetStrokeColor

CGContextSetFillColor

Пространство текущего цвета. Не рекомендуемый. Вместо этого цвет набора использование CGColor возражает и функции CGContextSetStrokeColorWithColor и CGContextSetFillColorWithColor.

Вы указываете цвета заливки и цвета обводки как значения, расположенные в пробелах цвета заливки и цвета обводки. Например, полностью влажный красный цвет в цветовом пространстве RGB указан как массив четырех чисел: (1.0, 0.0, 0.0, 1.0). Первые три числа указывают полную красную интенсивность и никакую зеленую или синюю интенсивность. Четвертое число является альфа-значением, использующимся для указания непрозрачности цвета.

Если Вы снова используете, раскрашивает Ваше приложение, самый эффективный способ установить цвета заливки и цвета обводки состоит в том, чтобы создать объект CGColor, который Вы тогда передаете в качестве параметра функциям CGContextSetFillColorWithColor и CGContextSetStrokeColorWithColor. Можно иметь в наличии объект CGColor, пока Вам нужен он. Можно улучшить производительность приложения при помощи объектов CGColor непосредственно.

Вы создаете объект CGColor путем вызывания функции CGColorCreate, передача CGColorspace возражает и массив значений с плавающей точкой, указывающих значения интенсивности для цвета. Последний компонент в массиве указывает альфа-значение.

Установка намерения рендеринга

Намерение рендеринга указывает, как Кварц отображает цвета от пространства исходного цвета до тех, которые являются в палитре целевого цветового пространства графического контекста. Если Вы явно не устанавливаете намерение рендеринга, Кварц использует относительное колориметрическое намерение рендеринга для всего получения кроме (выбранных) изображений битового массива. Кварц использует перцепционное намерение рендеринга для тех.

Для установки намерения рендеринга вызовите функцию CGContextSetRenderingIntent, передача графического контекста и одной из следующих констант: