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 结构的指针。 它由逻辑映射定义,逻辑映射是位图,每个像素有一位。

此掩码限制复制的源区域。 掩码具有0xCCAA的隐式 rop4 ,这意味着无论掩码为 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 数据类型

永远不会使用 A、B 和 C 共线调用 EngPlgBlt

prcl

指向 RECTL 结构的指针,该结构在源表面的坐标系中定义要复制的区域。 源矩形的点顺序良好。 永远不会为 EngPlgBlt 提供空源矩形。

pptl

指向 POINTL 结构的指针,该结构指定给定掩码中的哪个像素与源矩形中的左上角像素相对应。 如果 psoMskNULL,请忽略此参数。

[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

请注意,拉伸 blit 可以完全表示为平行四边形 blit,但为目标给定的坐标将除以 5。

要求

要求
最低受支持的客户端 适用于 Windows 2000 及更高版本的 Windows 操作系统。
目标平台 通用
标头 winddi.h (包括 Winddi.h)
Library Win32k.lib
DLL Win32k.sys

另请参阅

DrvAlphaBlend

DrvBitBlt

DrvPlgBlt

DrvStretchBlt

DrvStretchBltROP

DrvTransparentBlt

EngAlphaBlend

EngBitBlt

EngStretchBlt

EngStretchBltROP

EngTransparentBlt