Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 22


Предпочтительным является использование символических обозначений системных цветов, как это было сделано в примере 25-1, где для фона окна был задан цвет COLOR_WINDOWFRAME+1:

TColor  colorl(COLOR_WINDOWFRAME+1);     //Фактически будет светло-серый цвет

TColor color2(COLOR_WINDOW+1);                                   //Фактически будет  темно-зеленый цвет

Достоинство такого метода заключается в том, что при правильной настройке Windows все цвета бу­дут чистыми, а не составными. Неприятный для глаза составной цвет, т.е. цвет, состоящий фактически из набора точек нескольких разных цветов, может легко получиться при неправильном задании значений цветовых компонент. В частности, если при задании светло-кремового цвета ошибиться хотя бы на 1 в значениях компонент (указав, например, 241 вместо 240 или 254 вместо 255), то поле, закрашенное этим цветом, будет усеяно более темными точками (если только монитор не работает в режиме True Color). С другой стороны, при использовании символических констант не всегда легко определить заранее, какой получится цвет.

Рассмотрим теперь работу с инструментами рисования и контекстом устройства. Процедура созда­ния инструментов рисования (перьев, кистей, шрифтов), отличных от действующих по умолчанию, в принципе не отличается от той, что используется при традиционном программировании для Windows. Новый инструмент необходимо создать и выбрать контекст устройства, после чего все рисование будет осуществляться этим инструментом. При необходимости в контекст можно выбирать последовательно все новые и новые инструменты (например, перья или кисти разных цветов); каждый выбранный инст­румент будет действовать до замены его в контексте устройства следующим. Таким образом, типичная последовательно действий по замене инструмента будет выглядеть таким образом:

TPen myPen   (TColor::LtRed,3);       //Создаем перо красного цвета  толщиной 3 пиксела

dc.SelectObject(myPen);                              //Выбираем его в  текущий контекст устройства




Начало  Назад  Вперед