Рисование графических примитивов производится с помощью перьев. В 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().