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)

另请参阅

CLIPOBJ

DEVINFO

DrvFillPath

LINEATTRS

PATHOBJ

XFORMOBJ