drvStrokePath 函数 (winddi.h)
DrvStrokePath 函数笔划 (轮廓) 路径。
语法
BOOL DrvStrokePath(
[in, out] SURFOBJ *pso,
[in] PATHOBJ *ppo,
[in] CLIPOBJ *pco,
[in, optional] XFORMOBJ *pxo,
[in] BRUSHOBJ *pbo,
[in] POINTL *pptlBrushOrg,
[in] LINEATTRS *plineattrs,
[in] MIX mix
);
参数
[in, out] pso
指向 SURFOBJ 结构的指针,该结构标识要绘制的图面。
[in] ppo
指向 PATHOBJ 结构的指针。 提供 GDI PATHOBJ_Xxx 服务例程来枚举构成路径的线条、贝塞尔曲线和其他数据。 这指示要绘制的内容。
[in] pco
指向 CLIPOBJ 结构的指针。 GDI CLIPOBJ_Xxx 服务例程用于将 剪辑区域 枚举为一组矩形。 (可选)路径中的所有行都可以在 CLIPOBJ 结构中预先枚举。 这意味着驱动程序可以让 GDI 执行所有行剪裁计算。
[in, optional] pxo
指向 XFORMOBJ 结构的指针。 仅当绘制几何宽线时,才需要这样做。 它指定将世界坐标映射到设备坐标的转换。 这是必需的,因为路径是在设备坐标中提供的,但几何宽线实际上在世界坐标中加宽。
可以查询 XFORMOBJ 结构以查找转换。
[in] pbo
指向 BRUSHOBJ 结构的指针,该结构指定绘制路径时要使用的画笔。
[in] pptlBrushOrg
指向 POINTL 结构的指针,该结构指定用于对齐设备上的画笔图案的画笔原点。
[in] plineattrs
指向 LINEATTRS 结构的指针。 请注意,如果线条已设置样式,则必须将此结构的 elStyleState 成员作为此函数的一部分进行更新。 另请注意,如果要绘制单像素宽度修饰线,则必须更新 ptlLastPel 成员。
[in] mix
定义要用于画笔的前景光栅操作和后台光栅操作的混合模式。 有关混合模式的详细信息,请参阅备注。
返回值
如果驱动程序能够笔划路径,则返回值为 TRUE 。 如果 GDI 应改为笔划路径,则返回值为 FALSE,但不记录任何错误代码。 如果驱动程序遇到错误,则返回值DDI_ERROR,并报告错误代码。
注解
如果驱动程序已挂钩函数,并且设置了适当的 GCAPS,则 GDI 在 GDI 绘制具有任意属性集的线条或曲线时调用 DrvStrokePath 。
如果驱动程序支持此入口点,则它还应支持使用任意剪裁绘制整形宽线。 使用提供的 GDI 函数,调用可以分解为一组具有预计算剪裁的单像素宽度行。
如果要在 设备管理的图面上进行任何绘制,则需要此函数。
高级设备的驱动程序可以选择接收此调用,以绘制包含贝塞尔曲线和几何宽线的路径。 GDI 将测试 deVINFO 结构的 flGraphicsCaps 成员的GCAPS_BEZIERS和GCAPS_GEOMETRICWIDE标志,以决定是否应调用此函数。 (位的四个组合决定了此调用的四个功能级别。) 如果驱动程序获取包含贝塞尔曲线或几何宽线的高级调用,则它可以决定不处理调用,返回 FALSE。 如果路径或剪裁过于复杂,设备无法处理,则可能会发生这种情况。 如果调用返回 FALSE,GDI 会将调用分解为更简单的调用,以便更轻松地处理。
对于设备管理的表面,函数必须至少支持使用纯色画笔的单像素宽纯色和样式修饰线。
混合模式定义传入模式应如何与设备图面上已有的数据混合。 MIX 数据类型包含两个二进制光栅操作, (ROP2) 值打包到单个 ULONG 中。 最低顺序字节定义前台光栅操作;下一个字节定义后台光栅操作。 有关光栅操作代码的详细信息,请参阅Microsoft Windows SDK文档。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | winddi.h (包括 Winddi.h) |