EngBitBlt 函数 (winddi.h)
EngBitBlt 函数在设备管理的图面之间或设备管理的表面与 GDI 管理的标准格式位图之间提供常规位块传输功能。
语法
ENGAPI BOOL EngBitBlt(
SURFOBJ *psoTrg,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
RECTL *prclTrg,
POINTL *pptlSrc,
POINTL *pptlMask,
BRUSHOBJ *pbo,
POINTL *pptlBrush,
[in] ROP4 rop4
);
参数
psoTrg
指向 SURFOBJ 结构的指针,该结构标识要绘制的图面。
psoSrc
如果 rop4 需要它,则指针指向定义位块传输操作的源的 SURFOBJ 结构。
psoMask
指向定义要用作掩码的图面的 SURFOBJ 结构的指针。 掩码定义为每像素 1 位的位图。 通常,掩码会限制目标图面中要修改的区域。 掩码由值0xAACC的 rop4 选择。 当掩码为零时,目标图面不受影响。
掩码足够大,足以覆盖目标矩形。
如果此参数的值为 NULL 并且 rop4 需要掩码,则使用画笔中的隐式掩码。 如果需要掩码,则 psoMask 会替代画笔中的隐式掩码。
pco
指向 CLIPOBJ 结构的指针。 CLIPOBJ_Xxx 服务例程用于将剪辑区域枚举为一组矩形。 此枚举限制要修改的目标区域。 如果可能,GDI 会简化所涉及的剪裁;例如,永远不会使用单个剪切矩形调用此函数。 GDI 在调用此函数之前剪裁目标矩形,因此不需要进行其他剪裁。
pxlo
指向 XLATEOBJ 结构的指针,该结构指示如何在源图面和目标图面之间转换颜色索引。
prclTrg
指向目标图面坐标系中 RECTL 结构的指针,该结构定义要修改的区域。 矩形由两个点定义:左上和右下角。 此矩形的下边缘和右边缘不是位块传输的一部分,这意味着矩形的右下角是排他性的。
永远不会使用空目标矩形调用 EngBitBlt。 定义矩形的两个点始终按顺序排列。
pptlSrc
指向 POINTL 结构的指针,该结构定义源矩形的左上角(如果存在源)。 如果没有源,驱动程序应忽略此参数。
pptlMask
指向 POINTL 结构的指针,该结构定义掩码中的哪个像素对应于目标矩形的左上角。 如果未在 psoMask 中指定掩码,驱动程序应忽略此参数。
pbo
指向用于定义位块传输模式的 BRUSHOBJ 结构的指针。 GDI 的 BRUSHOBJ_pvGetRbrush 服务例程检索设备的画笔实现。 如果 rop4 参数不需要模式,驱动程序可以忽略此参数。
pptlBrush
指向 POINTL 结构的指针,该结构定义目标图面中画笔的原点。 画笔的左上方像素此时对齐,画笔根据其尺寸重复。 如果 rop4 参数不需要模式,请忽略此参数。
[in] rop4
表示一个光栅操作,该操作定义如何将掩码、图案、源和目标像素组合在一起以将输出像素写入目标图面。
这是一个四元光栅运算,它是常规三元 Rop3 运算的自然扩展。 Rop4 具有 16 个相关位,这类似于 Rop3 的 8 个定义位。 (忽略 Rop3 的其他冗余位。) 实现 Rop4 的最简单方法是单独考虑其 2 个字节。 较低的字节指定一个 Rop3,无论掩码为 1,都应计算该 Rop3。 高字节指定可在掩码为 0 的位置计算和应用的 Rop3。
返回值
如果函数成功,则返回值为 TRUE 。 否则,它为 FALSE,并记录错误代码。
注解
如果设备表面组织为标准格式位图,驱动程序可以通过调用 EngBitBlt 请求 GDI 执行位块传输。 如果驱动程序具有用于快速处理简单传输的特殊硬件,但不想处理具有复杂传输的调用,则驱动程序可能会执行此操作。
有关光栅操作的详细信息,请参阅Microsoft Windows SDK文档。
要求
最低受支持的客户端 | 适用于 Windows 2000 及更高版本的 Windows 操作系统。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |