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


Функция EngPlgBlt (winddi.h)

Функция EngPlgBlt приводит к тому, что GDI выполняет сменную передачу битовых блоков.

Синтаксис

ENGAPI BOOL EngPlgBlt(
       SURFOBJ         *psoTrg,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMsk,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlBrushOrg,
       POINTFIX        *pptfx,
       RECTL           *prcl,
       POINTL          *pptl,
  [in] ULONG           iMode
);

Параметры

psoTrg

Указатель на структуру SURFOBJ , которая описывает поверхность для рисования.

psoSrc

Указатель на структуру SURFOBJ, которая описывает исходную поверхность для операции передачи битовых блоков.

psoMsk

Указатель на необязательную структуру SURFOBJ, представляющую маску для источника. Он определяется логической картой, которая представляет собой растровое изображение с одним битом на пиксель.

Эта маска ограничивает область копируемых источников. Маска имеет неявный rop4 0xCCAA, что означает, что источник должен быть скопирован везде, где маска равна 1, но назначение следует оставить в покое, где маска равна нулю.

Если этот параметр имеет значение NULL, существует неявное значение rop4 0xCCCC, что означает, что источник должен быть скопирован везде в исходном прямоугольнике.

Маска всегда будет достаточно большой, чтобы содержать соответствующий источник; плитка не требуется.

pco

Указатель на структуру CLIPOBJ , которая ограничивает область назначения для изменения. Функции GDI перечисляют область клипа в виде набора прямоугольников.

По возможности GDI упрощает обрезку. В отличие от функции DrvBitBlt , EngPlgBlt можно вызывать с одним прямоугольником обрезки. Это предотвращает ошибки округления при обрезке выходных данных.

pxlo

Указатель на структуру XLATEOBJ , которая определяет способ преобразования цветовых индексов между исходной и целевой поверхностями. Эту структуру XLATEOBJ можно запросить, чтобы найти цвет RGB для любого исходного индекса.

Для интерполяции цветов требуется высококачественная передача битовых блоков.

pca

Указатель на структуру COLORADJUSTMENT, которая определяет значения корректировки цвета, применяемые к исходному растровом рисунку перед растягиванием битов. Дополнительные сведения см. в документации по Microsoft Windows SDK.

pptlBrushOrg

Указатель на структуру POINTL , указывающую источник полутоновой кисти. Драйверы, использующие полутоновые кисти, должны выравнивать верхний левый пиксель шаблона кисти с этой точкой на поверхности устройства.

pptfx

Указатель на три структуры POINTFIX, которые определяют параллелограмм в области назначения. Четвертая, неявная, вершина присваивается следующим образом: D = B + C − A. Описание этого типа данных см. в разделе Типы данных GDI.

EngPlgBlt никогда не вызывается с помощью коллинеара A, B и C.

prcl

Указатель на структуру RECTL , которая определяет в системе координат исходной поверхности область для копирования. Точки исходного прямоугольника хорошо упорядочены. EngPlgBlt никогда не получит пустой исходный прямоугольник.

pptl

Указатель на структуру POINTL, указывающую, какой пиксель в заданной маске соответствует верхнему левому пикселю в исходном прямоугольнике. Игнорируйте этот параметр, если psoMsk имеет значение NULL.

[in] iMode

Определяет, как объединяются исходные пиксели для получения выходных пикселей. Этот параметр может иметь одно из следующих значений:

Значение Значение
BLACKONWHITE При сжатии битовых блоков пиксели должны быть объединены с операцией AND. На растянутом битовом блоке необходимо реплицировать пиксели передачи.
COLORONCOLOR При сжатии битового блока достаточное количество пикселей следует игнорировать, чтобы пиксели не комбинировались. При растягивая передачу битовых блоков пиксели должны реплицироваться.
ПОЛУТОНАХ Драйвер может использовать группы пикселей в выходной поверхности, чтобы наилучшим образом приблизить цвет или серый уровень входных данных.
WHITEONBLACK При сжатии битовых блоков пиксели должны быть объединены с операцией OR. При передаче растяжения блоков необходимо реплицировать пиксели.
 

Методы WHITEONBLACK, BLACKONWHITE и COLORONCOLOR просты и обеспечивают совместимость для старых приложений, но не дают наилучшие результаты для цветовых поверхностей.

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

Если функция выполнена успешно, возвращаемое значение равно TRUE . В противном случае — FALSE и отображается код ошибки.

Комментарии

EngPlgBlt выполняет только определенные типы поворотов.

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

Исходный прямоугольник в prcl считается геометрическим прямоугольником, углы которого смещаются (-0,5,-0,5) от заданных целочисленных координат. Это точно соответствует исходному прямоугольнику для EngStretchBlt. Исходный прямоугольник всегда хорошо упорядочен.

Левый верхний угол исходного прямоугольника сопоставляется с первой точкой A. Правый верхний угол исходного прямоугольника сопоставляется со второй точкой B. Левый нижний угол исходного прямоугольника сопоставляется с третьей точкой C. Правый нижний угол исходного прямоугольника сопоставляется с неявной точкой параллелограмма, определяемой путем обработки трех заданных точек как векторов и вычислений:

D = B + C - A

Обратите внимание, что растяжение может быть выражено точно в виде параллелограмма, но координаты, заданные для назначения, будут кратны на пять.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть winddi.h (включая Winddi.h)
Библиотека Win32k.lib
DLL Win32k.sys

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

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt