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 结构的指针,该结构指定给定掩码中的哪个像素对应于源矩形中的左上角像素。 如果 psoMskNULL,请忽略此参数。

[in] iMode

定义如何组合源像素以获取输出像素。 此参数可能是以下值之一:

含义
BLACKONWHITE 在收缩位块传输中,像素应与 AND 操作结合使用。 应在拉伸位块传输像素上复制。
COLORONCOLOR 在收缩位块传输中,应忽略足够的像素,以便不需要合并像素。 在拉伸位块传输中,应复制像素。
半 色调 驱动程序可以使用输出图面中的像素组来最好地近似输入的颜色或灰色级别。
WHITEONBLACK 在收缩位块传输中,像素应与 OR 操作结合使用。 在拉伸块传输上,应复制像素。
 

WHITEONBLACK、BLACKONWHITE 和 COLORONCOLOR 的方法很简单,可为旧应用程序提供兼容性,但不会为颜色图面生成最佳查找结果。

返回值

如果函数成功,则返回值为 TRUE 。 否则为 FALSE ,并报告错误代码。

注解

EngPlgBlt 仅执行某些类型的旋转。

此函数执行从 中国定义 到任何并行方差的矩形的位块传输。 平行方差由 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