Окт 16

Отображение DDB-pacтpa

Несмотря на то что DDB-растры играют важную роль в Windows-программировании, в Win32 API нет функции для непосредственного отображения DDB. В GDI задача отображения DDB решается обобщенно, как задача пересылки прямоугольного массива пикселов с одного графического устройства {устройства-источника) на другое графическое устройство {устройство-приемник).
При отображении растра устройством-приемником обычно является экран дисплея, и его представителем выступает контекст дисплея.
А что в этом случае является устройством-источником? В роли этого устройства выступает виртуальное графическое устройство, имитируемое в памяти в виде растра. Для его представления в GDI предусмотрен контекст устройства в памяти (или совместимый контекст). В главе 2 была дана краткая характеристика этого вида контекста устройства. Напомним, что совместимый контекст создается следующей функцией:
HDC CreateCompatibleDC (HDC hdc): где hdc — дескриптор существующего контекста устройства, с которым должен быть совместим создаваемый контекст. Функция CreateCompatibleDC может использоваться только с устройствами, поддерживающими растровые операции. Чаще всего hdc является дескриптором контекста дисплея, который относится к клиентской области окна приложения. Если этот параметр имеет значение NULL, то функция создает контекст в памяти, совместимый со всем экраном дисплея. Если функция завершается успешно, то она возвращает дескриптор совместимого контекста устройства.
Когда совместимый контекст устройства создан, с ним по умолчанию связан монохромный растр из одного пиксела. Поэтому, прежде чем использовать этот контекст, необходимо выбрать в него DDB-растр при помощи функции SelectObject.