Создание пера для рисования линий

Рисование графических примитивов производится с помощью перьев. В Windows'95 есть три предопределенных пера - черное (BLACK_PEN), белое (WHITE_PEN) и прозрачное (NULL_PEN). При создании окна по умолчанию ему присваивается черное перо. Хэндл каждого из них может быть получен с помощью функции GetStockObject(). Естественно, что программиста не может удовлетворитьь столь малое число перьев, поэтому для прорисовки линий можно воспользоваться пером, созданным в программе посредством вызова функции CreatePen(). Как всегда, обращаемся к файлам заголовков, в данном случае - к файлу wingdi.h:


  WINGDIAPI HPEN   WINAPI CreatePen(int, int, COLORREF);

Первый аргумент определяет стиль кисти. В wingdi.h эти стили описаны достаточно образно. Для того чтобы сохранить стиль этого описания (не путать со стилем кисти) я включил его третьим столбцом в таблице:

Возможные стили кисти

Стиль пера Значение Описание Эффект
PS_SOLID 0 ______ Сплошная линия
PS_DASH 1 ------ Пунктирная линия
PS_DOT 2 ...... Линия из точек
PS_DASHDOT 3 _._._._ Штрих-пунктирная линия (тире-точка)
PS_DASHDOTDOT 4 _.._.._ Штрих-пунктирная линия (тире-точка-точка)
PS_NULL 5   Прозрачное перо
PS_INSIDEFRAME 6   При рисовании замкнутой фигуры граница фигуры будет определятся по внешнему краю, а не по середине линии (если толщина пера более 1 пикселя)

Второй аргумент функции CreatePen() - толщина пера в логических единицах. Если этот аргумент равен 0, то толщина пера делается равной одному пикселю.

Третий аргумент - цвет чернил. Теперь для того, чтобы мы могли использовать наше перо, необходимо сделать его текущим в контексте устройства. Делается это уже давно знакомой нам функцией SelectObject(). После того, как мы отработаем с пером, необходимо удалить его, вызвав функцию DeleteObject().

Используются технологии uCoz