显示和打印设备: Windows DDK

EngBitBlt

EngBitBlt在设备管理的表面之间或设备管理的表面和GDI管理的标准格式位图之间提供通用的位块传输功能。

BOOL
  EngBitBlt(    
	IN SURFOBJ  *psoTrg,    
	IN SURFOBJ  *psoSrc,    
	IN SURFOBJ  *psoMask,    
	IN CLIPOBJ  *pco,    
	IN XLATEOBJ  *pxlo,    
	IN RECTL  *prclTrg,    
	IN POINTL  *pptlSrc,    
	IN POINTL  *pptlMask,    
	IN BRUSHOBJ  *pbo,    
	IN POINTL  *pptlBrush,    
	IN ROP4  rop4    
);

参数

  • psoTrg

  • 指向SURFOBJ结构,以标识要绘制的曲面。

  • psoSrc

  • 如果rop4需要它,则指向定义用于位块传输操作的源的SURFOBJ结构。

  • psoMask

  • 指向定义要用作掩码的曲面的SURFOBJ结构。掩码被定义为每像素1位的位图。通常,掩模限制目的地表面中要修改的区域。屏蔽由具有值0xAACC的rop4选择。当掩模为零时,目标表面不受影响。

      面罩足够大以覆盖目的地矩形。

      如果该参数的值为空,并且rop4需要掩码,则使用画笔中的隐式掩码。如果需要掩码,则psoMask将覆盖画笔中的隐式掩码。

  • pco

  • 指向CLIPOBJ结构。 提供CLIPOBJ_Xxx服务程序以将剪辑区域枚举为一组矩形。 此枚举限制将被修改的目标的区域。 只要有可能,GDI就简化了涉及的剪辑; 例如,这个函数从来不会用单个裁剪矩形来调用。 在调用此函数之前,GDI会剪切目标矩形,不需要额外的剪辑。

  • pxlo

  • 指向一个XLATEOBJ结构,指示如何在源表面和目标曲面之间转换颜色索引。

  • prclTrg

  • 指向目标曲面的坐标系中定义要修改区域的RECTL结构。 矩形由两点定义; 左上和右下 该矩形的下边缘和右边缘不是位块传输的一部分,意味着矩形是右下方的排除。

  • EngBitBlt从来没有调用空的目标矩形。 定义矩形的两个点总是很好的排序。

  • pptlSrc

  • 指向定义源矩形左上角的POINTL结构(如果源存在)。 如果没有源,则驱动程序应忽略此参数。

  • pptlMask

  • 指向POINTL结构,定义掩码中的哪个像素对应于目标矩形的左上角。 如果在psoMask中未指定掩码,则驱动程序应忽略此参数。

  • pbo

  • 指向用于定义位块传输模式的画笔对象。 GDI的BRUSHOBJ_pvGetRbrush服务程序检索设备对画笔的实现。 如果rop4参数不需要模式,驱动程序可以忽略此参数。

  • pptlBrush

  • 指向定义目标表面中画笔起点的POINTL结构。 刷子的左上方像素在这一点处对齐,并且刷子根据其尺寸重复。 如果therop4参数不需要模式,则忽略该参数。

  • rop4

  • 表示光栅操作,它定义掩模,图案,源和目标像素如何组合以将输出像素写入目标曲面。

    这是一个四元光栅操作,它是通常的三元Rop3操作的自然扩展。 Rop4具有16个相关位,类似于Rop3的8个定义位。 (另一个,Rop3的冗余位被忽略。)实现Rop4的最简单的方法是单独考虑它的2个字节。 低字节指定在掩码为1时应该计算的Rop3。高字节指定可以在掩码为0的任何地方计算和应用的Rop3。

返回值

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

头文件

声明于 winddi.h. 包含于 winddi.h.

注释

如果将设备的表面组织为标准格式位图,驱动程序可以通过调用EngBitBlt来请求GDI执行位块传输。 如果驱动程序具有特殊的硬件来快速处理简单的传输,但是不希望通过复杂的传输来处理呼叫,则可能会这样做。

有关栅格操作的更多信息,请参阅平台 SDK文档。