Цветовые и цветовые пространства
Устройства (дисплеи, принтеры, сканеры, камеры) не обрабатывают цвет тот же путь; у каждого есть его собственный диапазон цветов, которые устройство может произвести искренне. Цвет, произведенный на одном устройстве, не мог бы быть в состоянии быть произведенным на другом устройстве.
Чтобы работать с цветом эффективно и понять Кварц 2D функции для использования цветовых пространств и цвета, необходимо быть знакомы с терминологией, обсужденной в цвете Обзор управления. Тот документ обсуждает цветное восприятие, значения цвета, независящие от устройств и цветовые пространства устройства, проблема согласования цветов, представляя намерение, модули управления цветом и ColorSync.
В этой главе Вы изучите, как Кварц представляет цветовые и цветовые пространства, и каков альфа-компонент. Эта глава также обсуждает как к:
Создайте цветовые пространства
Создайте и выберите цвета
Намерение рендеринга набора
О цветовых и цветовых пространствах
Цвет в Кварце представлен рядом значений. Значения бессмысленны без цветового пространства, диктующего, как интерпретировать информацию о цвете. Например, значения в Таблице 4-1 все представляют цветной синий в полной интенсивности. Но не зная цветовое пространство или допустимый диапазон значений для каждого цветового пространства, у Вас нет способа знать, какой цвет каждый набор значений представляет.
Значения | Цветовое пространство | Компоненты |
---|---|---|
240 градусов, 100%, 100% | HSB | Оттенок, насыщенность, яркость |
0, 0, 1 | RGB | Красный, зеленый, синий |
1, 1, 0, 0 | CMYK | Голубой, пурпурный, желтый, черный |
1, 0, 0 | BGR | Синий, зеленый, красный |
При обеспечении неправильного цветового пространства можно получить довольно резкие различия, как показано на рисунке 4-1. Несмотря на то, что зеленый цвет интерпретируется то же в BGR и цветовых пространствах RGB, красные и синие значения зеркально отражаются.
Цветовые пространства могут иметь различные числа компонентов. В то время как цветовое пространство 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-3 сравнивает глобальную альфа-установку 0,5 со значением по умолчанию 1,0.
В нормальном режиме смешивания (который является значением по умолчанию для состояния графики) Кварц выполняет альфу, смешивающуюся путем объединения компонентов исходного цвета с компонентами целевого цвета с помощью формулы:
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.
Можно использовать функции CGContextSetFillColorSpace
и CGContextSetStrokeColorSpace
для установки пробелов цвета заливки и цвета обводки, или можно использовать одну из функций удобства (перечисленный в Таблице 4-2), которые выбирают цвет для цветового пространства устройства.
Функция | Используйте для выбирания цвета для |
---|---|
Устройство RGB. Во время ГЕНЕРАЦИИ PDF Кварц пишет цвета, как будто они были в соответствующем универсальном цветовом пространстве. | |
Устройство CMYK. (Остается устройством CMYK во время ГЕНЕРАЦИИ PDF.) | |
Серое устройство. Во время ГЕНЕРАЦИИ PDF Кварц пишет цвета, как будто они были в соответствующем универсальном цветовом пространстве. | |
Любое цветовое пространство; Вы предоставляете объект CGColor, указывающий цветовое пространство. Используйте эти функции для цветов, в которых Вы неоднократно нуждаетесь. | |
Пространство текущего цвета. Не рекомендуемый. Вместо этого цвет набора использование CGColor возражает и функции |
Вы указываете цвета заливки и цвета обводки как значения, расположенные в пробелах цвета заливки и цвета обводки. Например, полностью влажный красный цвет в цветовом пространстве RGB указан как массив четырех чисел: (1.0, 0.0, 0.0, 1.0). Первые три числа указывают полную красную интенсивность и никакую зеленую или синюю интенсивность. Четвертое число является альфа-значением, использующимся для указания непрозрачности цвета.
Если Вы снова используете, раскрашивает Ваше приложение, самый эффективный способ установить цвета заливки и цвета обводки состоит в том, чтобы создать объект CGColor, который Вы тогда передаете в качестве параметра функциям CGContextSetFillColorWithColor
и CGContextSetStrokeColorWithColor
. Можно иметь в наличии объект CGColor, пока Вам нужен он. Можно улучшить производительность приложения при помощи объектов CGColor непосредственно.
Вы создаете объект CGColor путем вызывания функции CGColorCreate
, передача CGColorspace возражает и массив значений с плавающей точкой, указывающих значения интенсивности для цвета. Последний компонент в массиве указывает альфа-значение.
Установка намерения рендеринга
Намерение рендеринга указывает, как Кварц отображает цвета от пространства исходного цвета до тех, которые являются в палитре целевого цветового пространства графического контекста. Если Вы явно не устанавливаете намерение рендеринга, Кварц использует относительное колориметрическое намерение рендеринга для всего получения кроме (выбранных) изображений битового массива. Кварц использует перцепционное намерение рендеринга для тех.
Для установки намерения рендеринга вызовите функцию CGContextSetRenderingIntent
, передача графического контекста и одной из следующих констант:
kCGRenderingIntentDefault
. Использует намерение рендеринга значения по умолчанию для контекста.kCGRenderingIntentAbsoluteColorimetric
. Карты окрашивают за пределами палитры устройства вывода к самому близкому соответствию в палитре устройства вывода. Это может произвести эффект отсечения, где два различных значения цвета в палитре графического контекста отображаются на том же значении цвета в палитре устройства вывода. Это - лучший выбор, когда цвета, используемые в графике, в палитре и источника и места назначения, как это часто бывает с логотипами или когда используются плашечные цвета.kCGRenderingIntentRelativeColorimetric
. Относительные колориметрические сдвиги все цвета (включая тех в палитре) для учета различия между белой точкой графического контекста и белой точкой устройства вывода.kCGRenderingIntentPerceptual
. Сохраняет визуальное отношение между цветами путем сжатия палитры графического контекста для адаптации в палитре устройства вывода. Перцепционное намерение хорошо для фотографий и другого комплекса, подробных изображений.kCGRenderingIntentSaturation
. Сохраняет относительную степень насыщения цветов при преобразовании в палитру устройства вывода. Результатом является изображение с яркими, насыщенными цветами. Намерение насыщенности хорошо для репродуцирования изображений с низкой подробностью, таково как диаграммы представления и графики.