Окт 13

Контекст в памяти (совместимый контекст)

Рассмотренные выше типы контекстов устройства позволяют выводить графику только на физические устройства, такие как видеоадаптеры или принтеры. Работа этих устройств обеспечивается драйверами, взаимодействующими с ними на низком уровне. Но в некоторых ситуациях бывает удобно осуществлять вывод на виртуальное графическое устройство, имитируемое в памяти в виде растра. Контекст устройства в памяти (или совместимый контекст) позволяет системе работать с указанным виртуальным устройством.
Такой контекст создается функцией, имеющей следующий прототип:
HDC CreateCompatibleDC (HDC hdc);
Параметр hdc позволяет указывать дескриптор существующего контекста устройства, с которым должен быть совместим создаваемый контекст. Если этот параметр равен NULL, то функция создает контекст в памяти, совместимый с текущим экраном приложения.
Если функция завершается успешно, то она возвращает дескриптор совместимого контекста устройства. Совместимый контекст устройства можно создавать только для тех устройств, которые поддерживают растровые операции.
Когда совместимый контекст устройства создан, с ним по умолчанию связано растровое изображение из одного пиксела. Поэтому прежде чем использовать этот контекст, необходимо связать с ним растр {bitmap) с необходимыми шириной и высотой. Это осуществляется при помощи функции SelectObject или CreateCompatibleBitmap.
После создания совместимого контекста устройства он используется как обычный контекст: вы можете устанавливать его атрибуты, выбирать перья, кисти и иные необходимые параметры.
Когда совместимый контекст устройства перестанет быть нужным, необходимо его удалить, вызвав функцию DeleteDC.