Главная » WPF » Цвет

0

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

Какого цвета зеленый?

Как  обозначить  конкретный цвет?  В Web программировании зеленый  цвет называется «Green»  или  «#00FF00». В терминологии GDI  его код 32768. То и другое – правильные обозначения цвета, но ни одно из них не говорит мне, како го же он цвета.

Попробуем  подойти  к проблеме  по другому.  Как  можно  показать  кому  ни будь, что такое зеленый цвет? Выйти на улицу и показать пальцем на клочок тра вы. Конечно, цвет травы зависит от освещения, в солнечные дни она кажется яр че. Можно еще указать этот цвет на экране монитора. Мониторы (как, впрочем, и все цветопередающие устройства) способны отображать  лишь ограниченное  ко личество цветов. Это ограничение обусловлено физической природой устройства и относится  в равной мере и к мониторам,   и к принтерам,  и к телевизорам,  и к цифровым камерам, и к сканерам – ко всякому  прибору, который  может считы вать или отображать  цвета.

Таким  образом, у нас нет способов ни точно закодировать цвет, ни точно по казать его. Теперь становится понятно,  насколько  проблема цвета на самом деле сложна. В любой книге, посвященной высококлассным программам для редакти рования цветных изображений (типа Adobe Photoshop), уделено много внимания цвету – пространствам цветов, моделям, рабочим моделям и т.д.

А какое нам, собственно, до этого дело?

По мере того как все больше  и больше  решений  принимается на основе ис пользования компьютера, способность сохранять оригинальные цвета оказывает ся все более важной. Понятно  ведь, что цвета логотипа компании  на Web сайте и в печатном  буклете  должны  совпадать.  Другой  пример: насколько  близки  к ре альным должны быть цвета на фотографии? А если эту фотографию включить  в документ, то должны ли цвета сохраниться? Проблема цветопередачи в докумен тообороте  и сохранности  всей цветовой  информации становится значимой  для всех, кто имеет дело с цифровыми документами.

Описание цвета

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

4

 

кодировки к другой. На сегодняшний день основные  цветопередающие устрой ства – это компьютерные мониторы  (ЭЛТ или ЖК) и принтеры (в которых при меняются  самые разные технологии  печати).

Самым  популярным форматом  описания  цвета является sRGB  . Эта модель естественна  для большинства мониторов  и по умолчанию  применяется в Web. В схеме sRGB есть три канала данных, каждый шириной  8 бит. В совокупности мы получаем  24  бита,  которые  позволяют  представить  примерно  16.7  миллионов цветов. Учитывая, что человеческий глаз способен различить лишь около 8 мил лионов цветов, такая расточительность достойна осуждения. Проблема в том, что стандарт sRGB описывает компьютерную  цветовую гамму5.

Каждая  схема кодирования способна представить  определенную цветовую гамму. Насколько черным является черный цвет, а насколько  белым – белый? В кодировке  sRGB можно представить  16.7 миллиона  цветов, но полный диапазон при этом относительно невелик6.  Таким образом, мы имеем весьма мелкую шка лу цветов, то есть шаг между соседними оттенками мал. Если распространить схе му sRGB на более широкий  диапазон  цветов, то шаг между оттенками  окажется слишком велик.

Рис. 5.5. Различные цветовые профили, показывающие оттенки серого

4

Буква s означает standard (стандарт), а RGB red green blue (красный зеленый синий). Эта

цветовая модель документирована организацией W3C (World Wide Web Consortium) на страни

це www.w3.org/Graphics/Color/sRGB.

5

Термин цветовая гамма относится к числу представимых цветов. Есть гамма, которую спосо

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

6

Типичная система оценивания в школах дает еще один пример гаммы. В этой шкале есть

оценки от 1 до 5, то есть всего пять различных значений: 1, 2, 3, 4, 5. Точность шкалы можно увеличить, введя оценки 5, 5 , 4+, 4, 4 и т.д. Можно и еще расширить гамму, добавив оценки

5+ и 1 . Расширяя гамму, мы можем представить оценки за пределами диапазона 1 5.

7

 

Для решения этой проблемы был предложен стандарт scRGB . В этой кодиров ке цвета  представлены  числами  с плавающей  точкой  переменной  длины.  Один цвет может быть закодирован 64 или 128 битами (вместо  24 бит в sRGB).  Кроме того, гамма scRGB очень широка (далеко  выходит за пределы человеческого  зре ния). Чтобы понять, зачем scRGB допускает такую высокую точность представле ния цвета и такую широкую  гамму, нужно вернуться  к проблеме  цветопередачи при документообороте. В силу повышенной точности можно выполнять преобра зования  цветов (например, затемнять  изображение), не теряя важных данных.

8

 

WPF на уровне ядра поддерживает как sRGB, так и scRGB. К тому же, разре шается использовать любой цветовой профиль ICC . На рис. 5.5 показаны профи ли scRGB, sRGB, а также нестандартный профиль  Adobe 1998 (очень похожий на sRGB); во всех случаях представлена  кодировка  цвета «White»:

<Rectangle Fill=’sc# 1.0,1.0, 1.0, 1.0’ />

<Rectangle Fill=’#FFFFFFFF’ />

<Rectangle

Fill=’ContextColor file://…/AdobeRGB1998.icc 1.0,1.0,1.0,1.0’ />

Отметим, что во всех этих кодировках  участвуют четыре значения: Red, Green, Blue и Alpha. WPF поддерживает альфа канал для всех цветов, что позволяет  за давать  степень  прозрачности цвета: 0 означает  полностью  прозрачный, а 255 – полностью  непрозрачный. В цветовых профилях могут применяться и другие способы кодирования альфа канала (равно как и самих цветов). Так, в sRGB аль фа представляется 8 битами (0 255), а в scRGB – 16 битами (0.0 – 1.0; оставшие ся биты числа с плавающей  точкой в scRGB используются для документооборо та). Мы еще вернемся к деталям работы с альфа каналом  и способам его исполь зования  для управления прозрачностью в WPF.

Кисти

Как бы интересна ни была тема определения цвета, одного единственного цве та недостаточно для рисования.  Кисть – это способ сообщить системе, как раскра шивать  пиксели  внутри  некоторой  области.  Иногда  областью является внутрен ность пути, а иногда – штрих. В WPF определено  шесть кистей: SolidColorBrush,

7

Тайна происхождения аббревиатуры scRGB покрыта мраком. Официально она не означает ни

чего. По словам Майкла Стокса (Michael Stokes – глава национальной и Международной элект ротехнической комиссии (IEC), работающей над стандартом scRGB), это название появилось, когда японский национальный комитет попросил изменить предыдущий вариант XsRGB (excess RGB). Есть два основных кандидата на расшифровку: «specular RGB» (RGB с отраже нием), поскольку scRGB поддерживает больше белых цветов, чем просто значения 1.0, озна чающие полное рассеивание, и «standart compositing RGB» (стандартный композитный RGB) из за линейности, поддержки чисел с плавающей точкой, технологии HDR (high dynamic range

– расширенный динамический диапазон) и наличия широкой гаммы, которая идеально подхо дит для композиции. Последняя расшифровка к тому же неявно подчеркивает, что scRGB не предназначен для прямой поддержки в аппаратных устройствах или форматах, поскольку по определению охватывает значения за пределами человеческого зрения и (даже теоретичес

ки) реализуемых физических приборов.

8

International Color Consortium (Международный консорциум по средствам обработки цветных

изображений – www.color.org) определяет единый формат цветовых профилей.

LinearGradientBrush, RadialGradientBrush, ImageBrush, DrawingBrush и VisualBrush. Важно помнить, что в любом месте, где можно задать простой цвет, можно задать и кисть. На самом деле, когда в разметке указывается цвет, система создает кисть типа SolidColorBrush.

Источник: К. Андерсон  Основы  Windows Presentation Foundation. Пер. с англ. А. Слинкина — М.: ДМК Пресс, 2008 — 432 с.: ил.

По теме:

  • Комментарии