EngStretchBlt 函数 (winddi.h)
EngStretchBlt 函数导致 GDI 执行拉伸位块传输。
语法
ENGAPI BOOL EngStretchBlt(
SURFOBJ *psoDest,
SURFOBJ *psoSrc,
SURFOBJ *psoMask,
CLIPOBJ *pco,
XLATEOBJ *pxlo,
[in] COLORADJUSTMENT *pca,
[in] POINTL *pptlHTOrg,
[in] RECTL *prclDest,
[in] RECTL *prclSrc,
POINTL *pptlMask,
[in] ULONG iMode
);
参数
psoDest
指向描述要绘制的图面的 SURFOBJ 结构的指针。
psoSrc
指向描述位块传输的源图面的 SURFOBJ 结构的指针。
psoMask
指向为源定义掩码的 SURFOBJ 结构的指针。 掩码由逻辑映射定义,该映射是位图,每像素一位。
掩码限制复制的源区域。 如果指定此参数,则其隐式 rop4 为 0xCCAA,这意味着无论掩码为 1,都应复制源,但无论掩码为 0,目标应单独保留。
如果此参数为 NULL,则 rop4 将隐式0xCCCC,这意味着源应复制到源矩形中的任意位置。
pco
指向 CLIPOBJ 结构的指针,该结构限制目标中要修改的区域。 GDI 服务用于将 剪辑区域 枚举为一组矩形。
GDI 尽可能简化涉及的剪裁。 但是,与 DrvBitBlt 不同,可以使用单个剪裁矩形调用 EngStretchBlt 。 这可以防止剪裁输出时出现舍入错误。
pxlo
指向 XLATEOBJ 结构的指针,该结构指定如何在源图面和目标图面之间转换颜色索引。
还可以查询此 XLATEOBJ 结构以查找任何源索引的 RGB 颜色。 在某些情况下,高质量拉伸位块传输需要内插颜色。
[in] pca
指向 COLORADJUSTMENT 结构的指针,该结构定义在拉伸位之前要应用于源位图的颜色调整值。 有关详细信息,请参阅Microsoft Windows SDK文档。
[in] pptlHTOrg
指向定义半色调画笔原点的 POINTL 结构的指针。 使用半色调画笔的驱动程序应将画笔图案的左上角像素与设备图面上的此点对齐。
[in] prclDest
指向 RECTL 结构的指针,该结构定义要在目标图面的坐标系中修改的区域。 此矩形由两个排序不明确的点定义,这意味着第二个点的坐标不一定大于第一个点的坐标。 所描述的矩形不包括下边缘和右边缘。 永远不会使用空的目标矩形调用此函数。
如果目标矩形排序不良好, 则 EngStretchBlt 会使其排序良好。
[in] prclSrc
指向定义源图面坐标系中要复制的区域的 RECTL 结构的指针。 矩形将映射到 由 prclDest 定义的矩形。 永远不会为此函数提供一个空的源矩形,并且源矩形的点始终是有序的。
映射由 prclSrc 和 prclDest 定义。 prclDest 和 prclSrc 中指定的点位于对应于像素中心的整数坐标上。 由两个此类点定义的矩形被视为具有两个顶点的几何矩形,其坐标是给定点,但从每个坐标中减去 0.5。 (POINTL 结构是用于指定这些小数坐标顶点的简写表示法。)
任何矩形的边缘从不与像素相交,而是围绕一组像素。 矩形内的像素是右下角独占矩形的预期像素。 EngStretchBlt 将几何源矩形精确映射到几何目标矩形。
pptlMask
指向 POINTL 结构的指针,该结构定义给定掩码中对应于源矩形中左上角像素的像素。 如果未指定掩码,则忽略此参数。
[in] iMode
指定如何组合源像素以获取输出像素。 HALFTONE 模式比其他模式慢,但会生成更高质量的图像。
值 | 含义 |
---|---|
BLACKONWHITE | 在收缩位块传输中,像素应与布尔 AND 操作组合在一起。 在拉伸位块传输中,应复制像素。 |
COLORONCOLOR | 在收缩位块传输时,应忽略足够的像素,以便不需要合并像素。 在拉伸位块传输中,应复制像素。 |
半 色调 | 驱动程序可以使用输出图面中的像素组来最接近输入的颜色或灰度。 |
WHITEONBLACK | 在收缩位块传输中,像素应与布尔 OR 操作组合在一起。 在拉伸位块传输中,应复制像素。 |
返回值
如果函数成功,则返回值为 TRUE 。 否则,它为 FALSE ,并报告错误代码。
注解
此函数允许将相同的半调算法应用于 GDI 位图和设备图面。
如果驱动程序已挂钩 DrvStretchBlt 并调用它以执行驱动程序不支持的事情,则驱动程序应调用 EngStretchBlt 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 2000 及更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |