Окт 13

Кисти

Кисть — это растр размером 8x8 пикселов, который при закрашивании области дублируется в горизонтальном и вертикальном направлении. Когда Windows использует смешивание (dithering) для отображения большего числа цветов, чем доступно на дисплее, то на самом деле для этого используется кисть. На монохромном дисплее, например, смешивание черных и белых пикселов позволяет получить 64 разных оттенка серого цвета. На цветных видеосистемах полутона тоже реализуются при помощи подобных растровых образов, но с гораздо более широким набором доступных цветов.
Win32 GDI предоставляет несколько функций для создания объектов логических кистей. Логическая кисть описывает требования, предъявляемые к заливке со стороны приложения. Эти требования не всегда совпадают с возможностями физических устройств. Драйверы устройств поддерживают собственные структуры данных, определяющие реализацию логической кисти. Такие внутренние объекты называются физическими кистями.
Для дескрипторов логических кистей зарезервирован тип HBRUSH (handle to a brush), поэтому новая кисть объявляется следующим образом:
HBRUSH riBrush;
Значение дескриптора получают вызовом соответствующей функции. Вид вызываемой функции зависит от типа кисти. Так же как и при работе с перьями, созданные кисти выбираются в контекст устройства с помощью функции SelectObject, после чего заливка всех замкнутых фигур осуществляется выбранной кистью. Когда кисть перестает быть нужной, рекомендуется вернуть в контекст устройства прежнюю кисть, а ненужную кисть удалить при помощи функции DeleteObject. В разделе «Простые перья» были приведены возможные сценарии использования нескольких перьев в одном приложении. Аналогичные сценарии можно использовать и для работы приложения с несколькими кистями.