Функция MaskBlt

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

Синтаксис

BOOL MaskBlt(
  HDC hdcDest,     // дескриптор целевого DC
  int nXDest,      // x-коорд. верхнего левого угла цели
  int nYDest,      // y-коорд. верхнего левого угла цели 
  int nWidth,      // ширина источника и цели
  int nHeight,     // высота источника и цели
  HDC hdcSrc,      // дескриптор источникового DC
  int nXSrc,       // x-коорд. верхнего левого угла источника
  int nYSrc,       // y-коорд. верхнего левого угла источника
  HBITMAP hbmMask, // дескриптор монохромной битовой маски
  int xMask,       // горизонтальное смещение внутри битовой маски
  int yMask,       // вертикальное смещение внутри битовой маски
  DWORD dwRop      // код растровой операции
);

Параметры

hdcDest

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

nXDest

[in] Определяет x-координату, в логических  единицах измерения, левого верхнего угла целевого прямоугольника.

nYDest

[in] Определяет y-координату, в логических  единицах измерения, левого верхнего угла целевого прямоугольника.

nWidth

[in] Определяет ширину, в логических  единицах измерения, целевого прямоугольника и исходного точечного рисунка.

nHeight

[in] Определяет высоту, в логических  единицах измерения, целевого прямоугольника и исходного точечного рисунка.

hdcSrc

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

nXSrc

[in] Определяет x-координату, в логических  единицах измерения, левого верхнего угла исходного точечного рисунка.

nYSrc

[in] Определяет y-координату, в логических  единицах измерения, левого верхнего угла исходного точечного рисунка.

hbmMask

[in] Дескриптор одноцветного точечного рисунка маски, который объединяется с цветным точечным рисунком в исходном контексте устройства.

xMask

[in] Устанавливает горизонтальное смещение пикселя для точечного рисунка маски, заданного параметром hbmMask.

yMask

[in] Устанавливает вертикальное смещение пикселя для точечного рисунка маски, заданного параметром hbmMask.

dwRop

[in] Определяет и изображающие, и фоновые троичные коды растровых операций, которые функция использует, чтобы управлять комбинацией исходных и целевых данных. Код растровой операции фона  сохраняется в старшем байте старшего слова этого значения; код растровой операции изображения  сохраняется в младшем байте старшего слова этого значения; младшее слово этого значения игнорируется и должно равняться нулю. Макрокоманда MAKEROP4 создает такие комбинации изображающих и фоновых кодов растровых операций

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

Список стандартных кодов растровых операций см. в функции BitBlt.

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

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

Если функция завершается с ошибкой, величина возвращаемого значения - нуль.

Windows NT/2000/XP: Чтобы получать дополнительные сведения об ошибке, вызовите GetLastError.

Замечания

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

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

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

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

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

Если точечный рисунок маски - не одноцветный рисунок, то происходит ошибка.

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

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

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

ICM: Когда происходит копирование или пересылка массива данных, управление цветом не выполняется.

Windows 2000/XP: Когда функция используется в системе многоэкранного монитора, и hdcSrc и hdcDest должны ссылаться на одно и то же устройство, или функция завершится ошибкой. Для пересылки данных между контекстами устройства (DC) различных устройств, конвертируйте точечный рисунок в памяти  в аппаратно-независимый растровый формат (DIB) при помощи вызова функции GetDIBits. Чтобы показать на экране формат (DIB) на втором устройстве, вызовите функцию SetDIBits или StretchDIBits.

Смотри также 

Обзор Точечные рисунки, Функции, используемые точечными рисунками,  BitBlt, GetDeviceCaps, GetDIBits, PlgBlt, SetDIBits, StretchBlt, StretchDIBits

Размещение и совместимость MaskBlt

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz