Контекст устройства (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);