Контексты устройств

Контекст устройства (Device Context) – некоторое логическое представление физического устройства (экрана монитора, принтера, и т.д.). Контекст устройства – это внутренняя структура, для управления информацией о выходном устройстве. Она содержит информацию о параметрах и атрибутах («перо», «кисть», шрифт и др.) вывода графики на устройство (например, дисплей или принтер). Вместо направления вывода непосредственно на аппаратное устройство, приложение направляет его в контекст устройства, а затем Windows пересылает вывод в аппаратное устройство.

Типы контекстов устройств:

– контекст дисплея;

– контекст принтера;

– контекст в памяти (моделирует в памяти устройство вывода);

– информационный контекст (служит для получения данных от устройства).

Заголовки функции для получения контекста устройств (в программе используются хэндлы контекстов устройств - HDC):

HDC GetDC(HWND hWnd);

HDC BeginPaint(HWND hWnd, LPPAINTSTRUCT lpPaint);

Освобождение контекста устройств:

int ReleaseDC(HWND hWnd, HDC hDC);

BOOL EndPaint(HWND hWnd, CONST PAINTSTRUCT *lpPaint);

Графические «перья» и «кисти»

Заголовок функции для получения предопределенных «перьев» или «кистей»:

HGDIOBJ GetStockObject(int);

Возможные параметры:

Для «перьев»:

WHITE_PEN, BLACK_PEN, NULL_PEN

Для «кистей»:

WHITE_BRUSH, LTGRAY_BRUSH, GRAY_BRUSH, DKGRAY_BRUSH, BLACK_BRUSH, NULL_BRUSH

Заголовок функции для создания «пера»:

HPEN CreatePen(int, int, COLORREF);

Первый параметр определяет стиль, возможные значения (заданы константами в заголовочных файлах):

PS_SOLID /* ______ */

PS_DASH /* ------- */

PS_DOT /* ....... */

PS_DASHDOT /* _._._._ */

PS_DASHDOTDOT /* _.._.._ */

PS_NULL

Второй параметр определяет толщину.

Третий параметр определяет цвет, для получения цвета можно использовать макрос:

RGB(r,g,b)

он возвращает тип объявленный как

typedef DWORD COLORREF;

Заголовок функции для создания сплошной «кисти»:

HBRUSH CreateSolidBrush(COLORREF);

Заголовок функции для создания «кисти» с заданным стилем:

HBRUSH CreateHatchBrush(int, COLORREF);

Первый параметр определяет стиль, возможные значения, определенные в заголовочных файлах:

HS_HORIZONTAL /* ----- */

HS_VERTICAL /* || */

HS_FDIAGONAL /* \\\\\ */

HS_BDIAGONAL /* ///// */

HS_CROSS /* +++++ */

HS_DIAGCROSS /* xxxxx */

Заголовок функции для загрузки «пера» или «кисти» в контекст устройства:

HGDIOBJ SelectObject(HDC, HGDIOBJ);

После работы с объектами («пером» и «кистью») их необходимо удалить, заголовок функции для удаления имеет вид:

BOOL DeleteObject(HGDIOBJ);

Наши рекомендации