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