Шаг 80.
Visual Prolog.
Работа с цветом

    На этом шаге мы рассмотрим работу с цветом.

    VPI использует цветовую модель RGB, которая позволяет работать с 16 миллионами цветов. Вы составляете необходимый цвет из трех значений, определяющих компоненты красного (Red) (от 0 до 255), зеленого (Green) (от 0 до 255) и голубого (Blue) (от 0 до 255).

    В противоположность субтрактивному (subtractive) закрашиванию, при котором каждый добавляемый цвет перекрывает предыдущий, существует и аддитивное (additive) закрашивание с использованием цвета, получаемого сложением значений интенсивности для каждого из основных цветов: красного, зеленого и синего. Например, если минимальная интенсивность на данном экране была определена как 0, а максимальная - как 255, то белый пиксель будет задаваться RGB-тройкой (255,255,255), черный пиксель - тройкой (0,0,0) и голубой пиксель - тройкой (0,255,255).

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

    Для обеспечения дополнительной гибкости в цветовой гамме также применяется технология палитры. Цветовые палитры используются устройствами, которые способны порождать множество цветов, но в данный момент времени отображают только часть из них. Палитра - массив цветов, используемых в изображении. Она позволяет определить каждый цвет заданием его компонентов. Если видеокарта одновременно поддерживает, например, 256 цветов, это означает, что она может правильно отображать только 256 цветов, а палитра определяет, какие из 256 цветов могут быть отображены. Система управления окнами имеет одну глобальную системную палитру, а каждое окно может иметь локальную палитру. Система управления окнами старается отображать цвета в активном окне как можно правильнее. Это делает возможным, например, установить 200 из 256 доступных цветов видеокарты в различные оттенки синего, в сочетании с другими 56 цветами, доступными для других окон на экране.

    Забота об обработке цвета ложится на аппаратные средства: чем они лучше, тем лучше внешний вид экрана. За исключением отображения многоцветных рисунков, программист может выбрать любой цвет для элементов GUI. Однако из-за вышеупомянутого ограничения на количество одновременно используемых цветов, а также для обеспечения переносимости на различные компьютеры, будет полезным ограничиться использованием цветов, определенных в таблице 1.

Таблица 1. Идентификаторы стандартных цветов
Идентификатор цвета Цвет Значение (B-G-R)
color_Red Красный 0x0000FF
color_Green Зеленый 0x00FF00
color_Blue Синий 0xFF0000
color_Cyan Голубой 0xFFFF00
color_Magenta Фиолетовый 0xFF00FF
color_Yellow Желтый 0x00FFFF
color_Black Черный 0x000000
color_DkGray Темно-серый 0x404040
color_Gray Серый 0x808080
color_LtGray Светло-серый 0xC0C0C0
color_White Белый 0xFFFFFF

    Если вы хотите, чтобы приложение хорошо смотрелось при использовании черно-белого оборудования, используйте цвета color_Black, color_DkGray, color_Gray, color_LtGray и color_White. Для того чтобы проверить, поддерживается ли данный цвет аппаратным обеспечением компьютера, нужно использовать атрибут attr_have_color в предикате vpi_GetAttrVal. Кроме того, убедитесь, что цвета имеют достаточно большой контраст, чтобы соседние цвета не сливались в один.

    Предикат:

   Color=vpi_ComposeRGB(Red,Green,Blue)

может использоваться для создания цвета из основных цветов: красного, зеленого и синего. Яркость каждого основного цвета определена целым числом, но значимыми являются только 8 младших битов, давая диапазон от 0 до 255.

    Стандартный предикат:

   Color=dlg_ChooseColor(color OldColor)

позволяет пользователю выбрать любой из возможных цветов.

    На следующем шаге мы рассмотрим системы координат.




Предыдущий шаг Содержание Следующий шаг