Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб3.doc
Скачиваний:
4
Добавлен:
12.11.2019
Размер:
116.22 Кб
Скачать

2. Рисование графических примитивов

2.1. Создание кистей и перьев

Для того, чтобы нарисовать графическую фигуру (прямоугольник, эллипс, линию, и т.д.) c определенной заливкой и контуром, необходимо задать перо (тип HPEN) и кисть (тип HBRUSH), которыми будет рисоваться фигура. При чем перо определяет толщину и стиль линий фигуры, а кисть заливку фигуры.

Функция CreateSolidBrush создает кисть заданного цвета:

HBRUSH CreateSolidBrush(

COLORREF crColor // значение цвета кисти

);

Значение COLORREF - это 32 - битовое значение, определяющее цвет в RGB формате, которое имеет следующую шестнадцатеричную форму 0x00bbggrr. (старшие два байта = 0, следующие задают синюю компоненту, следующие зеленую, следующие красную). Максимальное значение для каждого байта 0xFF. Для облегчения задания цвета очень часто используется макрос

COLORREF RGB(

BYTE bRed, // красная компонента цвета

BYTE bGreen, // зеленая компонента цвета

BYTE bBlue // синяя компонента цвета

);

Функция CreatePen создает перо заданной толщины, стиля и цвета.

HPEN CreatePen(

int fnPenStyle, // стиль пера

int nWidth, // толщина пера

COLORREF crColor // цвет пера

);

Стиль пера fnPenStyle определяет вид линий фигуры: сплошной, штрих, пунктир. Некоторые стили пера приведены в таблице 3.1.:

Таблица 3.1. Стили пера

Стиль

Описание

PS_DASH

штрих

PS_DOT

Пунктир

PS_SOLID

Сплошной

PS_DASHDOT

штрих - пунктир

PS_NULL

Нет пера

Толщина пера nWidth в логических единицах, если равно нулю, толщина пера равна единице. Если толщина линии больше единицы, то стили PS_DASH, PS_DOT, PS_DASHDOT неприменимы.

2.2. Выбор объектов

После того, как необходимые перо и кисть созданы, необходимо их выбрать функцией SelectObject:

HGDIOBJ SelectObject(

HDC hdc, // дескриптор контекста устройства

HGDIOBJ hgdiobj // дескриптор объекта

);

Дескриптор контекста устройства hdc - контекст устройства клиентского окна. Дескриптор объекта - в данном случае созданное перо или кисть.

2.3. Рисование прямоугольника

Далее требуется вызвать функцию для рисования определенной графической фигуры: прямоугольник - Rectangle, эллипса - Ellipse, линий - MoveTo, LineTo.

Функция рисования прямоугольника - Rectangle:

BOOL Rectangle(

HDC hdc, // дескриптор контекста устройства

int nLeftRect, // х - координата левого верхнего угла прямоугольника

int nTopRect, // y - координата левого верхнего угла прямоугольника

int nRightRect, // х - координата правого нижнего угла прямоугольника

int nBottomRect // y - координата правого нижнего угла прямоугольника

);

Функция рисует прямоугольник выбранными кистью и пером, возвращает ненулевой результат в случае успешного завершения и ноль в противном случае. Сумма координат прямоугольника не может превышать 32767.