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


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

Функция EngStretchBltROP выполняет растягивающую передачу битовых блоков с помощью ROP.

Синтаксис

ENGAPI BOOL EngStretchBltROP(
       SURFOBJ         *psoDest,
       SURFOBJ         *psoSrc,
       SURFOBJ         *psoMask,
       CLIPOBJ         *pco,
       XLATEOBJ        *pxlo,
       COLORADJUSTMENT *pca,
       POINTL          *pptlHTOrg,
  [in] RECTL           *prclDest,
  [in] RECTL           *prclSrc,
       POINTL          *pptlMask,
  [in] ULONG           iMode,
       BRUSHOBJ        *pbo,
  [in] DWORD           rop4
);

Параметры

psoDest

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

psoSrc

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

psoMask

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

pco

Указатель на структуру CLIPOBJ , ограничивающую область, которая должна быть изменена в назначении. Подпрограммы службы CLIPOBJ_Xxx предоставляются для перечисления области клипа в виде набора прямоугольников.

По возможности GDI упрощает обрезку. Однако, в отличие от EngBitBlt, EngStretchBltROP можно вызывать с помощью одного прямоугольника обрезки. Это предотвращает ошибки округления при обрезке выходных данных.

pxlo

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

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

pca

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

pptlHTOrg

Указатель на структуру POINTL , которая определяет источник полутоновой кисти на целевой поверхности. При использовании полутоновых кистей GDI выравнивает верхний левый пиксель узора кисти на этом этапе и повторяет кисть в соответствии с ее размерами. GDI игнорирует этот параметр, если для параметра rop4 не требуется шаблон.

[in] prclDest

Указатель на структуру RECTL , которая определяет изменяемую прямоугольную область. Этот прямоугольник задается в системе координат поверхности назначения и определяется двумя точками: верхней левой и нижней правой. Две точки, определяющие прямоугольник, не всегда хорошо упорядочены, а это означает, что координаты второй точки не обязательно больше координат первой точки. Если прямоугольник назначения не упорядочен, GDI делает это так.

Прямоугольник является исключающим в правом нижнем углу; то есть его нижний и правый края не являются частью копии.

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

[in] prclSrc

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

Прямоугольник является исключающим в правом нижнем углу; то есть его нижний и правый края не являются частью копии.

Этот прямоугольник сопоставляется с прямоугольником, на который указывает prclDest .

EngStretchBltROP никогда не должен вызываться с пустым исходным прямоугольником.

pptlMask

Указатель на структуру POINTL, определяющую пиксель в маске, на которую указывает prclMask . Этот пиксель соответствует верхнему левому пикселю в исходном прямоугольнике, на который указывает prclSrc . Этот параметр игнорируется, если маска не указана; то есть GDI игнорирует pptlMask , если prclMask имеет значение NULL.

[in] iMode

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

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

pbo

Указатель на структуру BRUSHOBJ , используемую для определения шаблона для передачи битовых блоков. Подпрограмма службы BRUSHOBJ_pvGetRbrush GDI извлекает реализацию кисти устройства. GDI игнорирует этот параметр, если для параметра rop4 не требуется шаблон.

[in] rop4

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

Это кватернарная растровая операция, которая является естественным продолжением обычной тернарной операции Rop3. Rop4 имеет 16 соответствующих битов, которые аналогичны 8 определяющим битам Rop3. (Другие избыточные биты Rop3 игнорируются.) Самый простой способ реализации Rop4 — рассмотреть 2 байта отдельно. Нижний байт указывает Rop3, который должен вычисляться везде, где маска, на которую указывает psoMask , равно 1. Высокий байт указывает Rop3, который можно вычислить и применить, где маска равна нулю.

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

EngStretchBltROP возвращает значение TRUE при успешном выполнении. В противном случае он сообщает об ошибке и возвращает значение FALSE.

Комментарии

Драйвер должен вызвать EngStretchBltROP , если он подключил DrvStretchBltROP , но не поддерживает все операции.

Сопоставление определяется prclSrc и prclDest. Точки, указанные в prclDest и prclSrc , лежат на целочисленных координатах, соответствующих пиксельным центрам. Прямоугольник, определенный двумя такими точками, считается геометрическим прямоугольником с двумя вершинами, координатами которых являются заданные точки, но с 0,5, вычитаемыми из каждой координаты. (Структуры POINTL — это сокращенная нотация для указания этих вершин дробной координаты.)

Требования

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

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

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngPlgBlt

EngStretchBlt

EngTransparentBlt