Поделиться через


Функция MaskBlt (wingdi.h)

Функция MaskBlt объединяет данные цвета для исходных и целевых растровых изображений с помощью указанной операции маски и растра.

Синтаксис

BOOL MaskBlt(
  [in] HDC     hdcDest,
  [in] int     xDest,
  [in] int     yDest,
  [in] int     width,
  [in] int     height,
  [in] HDC     hdcSrc,
  [in] int     xSrc,
  [in] int     ySrc,
  [in] HBITMAP hbmMask,
  [in] int     xMask,
  [in] int     yMask,
  [in] DWORD   rop
);

Параметры

[in] hdcDest

Дескриптор контекста целевого устройства.

[in] xDest

Координата X в логических единицах левого верхнего угла целевого прямоугольника.

[in] yDest

Координата Y в логических единицах левого верхнего угла целевого прямоугольника.

[in] width

Ширина целевого прямоугольника и исходного растрового изображения (в логических единицах).

[in] height

Высота (в логических единицах) целевого прямоугольника и исходного растрового изображения.

[in] hdcSrc

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

[in] xSrc

Координата X в логических единицах верхнего левого угла исходного растрового изображения.

[in] ySrc

Координата Y в логических единицах верхнего левого угла исходного растрового изображения.

[in] hbmMask

Дескриптор растрового изображения монохромной маски в сочетании с растровым изображением цвета в контексте исходного устройства.

[in] xMask

Горизонтальное смещение пикселей для растрового изображения маски, заданного параметром hbmMask .

[in] yMask

Смещение вертикального пикселя для растрового изображения маски, указанного параметром hbmMask .

[in] rop

Коды растровых операций переднего плана и фоновых тернарных растровых операций (ROP), которые функция использует для управления сочетанием исходных и целевых данных. Код фоновой растровой операции хранится в байте высокого порядка слова этого значения; код растровой операции переднего плана хранится в нижнем байте слова высокого порядка этого значения; Слово нижнего порядка этого значения игнорируется и должно быть равно нулю. Макрос MAKEROP4 создает такие сочетания кодов операций переднего плана и фоновой растровой операции.

Обсуждение переднего плана и фона в контексте этой функции см. в следующем разделе Примечаний.

Список распространенных кодов растровых операций (ROP) см. в функции BitBlt . Обратите внимание, что ROP CAPTUREBLT обычно не может использоваться для печати контекстов устройств.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Функция MaskBlt использует зависимые от устройства растровые изображения.

Значение 1 в маске, заданной hbmMask , указывает, что код растровой операции переднего плана, заданный dwRop , должен применяться в этом расположении. Значение 0 в маске указывает, что код фоновой растровой операции, заданный dwRop , должен применяться в этом расположении.

Если для растровых операций требуется источник, прямоугольник маски должен охватывать исходный прямоугольник. Если это не так, функция завершится ошибкой. Если для растровых операций не требуется источник, прямоугольник маски должен охватывать прямоугольник назначения. Если это не так, функция завершится ошибкой.

Если преобразование поворота или сдвига действует для контекста исходного устройства при вызове этой функции, возникает ошибка. Однако разрешены другие типы преобразования.

Если цветовые форматы исходных, шаблонных и целевых растровых изображений отличаются, эта функция преобразует узор или исходный формат (или и то, и другое) в формат назначения.

Если растровое изображение маски не является монохромным, возникает ошибка.

При записи расширенного метафайла возникает ошибка (и функция возвращает значение FALSE), если контекст исходного устройства идентифицирует контекст устройства с расширенным метафайлом.

Не все устройства поддерживают функцию MaskBlt . Приложение должно вызвать функцию GetDeviceCaps с параметром nIndex в качестве RC_BITBLT, чтобы определить, поддерживает ли устройство эту функцию.

Если растровое изображение маски не указано, эта функция ведет себя точно так же, как BitBlt, используя код растровой операции переднего плана.

ICM: При возникновении заливки цветом управление цветом не выполняется.

При использовании в системе с несколькими мониторами hdcSrc и hdcDest должны ссылаться на одно и то же устройство, иначе функция завершится ошибкой. Чтобы передать данные между контроллерами домена для разных устройств, преобразуйте растровое изображение памяти (совместимое растровое изображение или DDB) в DIB, вызвав Метод GetDIBits. Чтобы отобразить DIB на втором устройстве, вызовите SetDIBits или StretchDIBits.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

BitBlt

Функции точечных рисунков

Общие сведения о точечных изображениях

Getdibits

GetDeviceCaps

PlgBlt

SetDIBits

StretchBlt

StretchDIBits