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 服务例程来枚举构成路径的线条、Bezier 曲线和其他数据。 这表示要绘制的内容。

[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标志,以确定它是否应调用此函数。 (位的四个组合决定了此调用的四个功能级别。) 如果驱动程序获取包含 Bezier 曲线或几何宽线的高级调用,则无法决定不处理调用,返回 FALSE。 如果路径或剪辑过于复杂,设备无法处理,则可能会出现这种情况。 如果调用返回 FALSE,GDI 会将调用分解为更简单的调用,以便更轻松地处理。

对于设备管理的图面,该函数必须使用纯色画笔最少地支持单像素宽纯色和样式的整容线条。

混合模式定义传入模式应如何与设备图面上已有的数据混合。 MIX 数据类型由两个二进制光栅操作组成, (ROP2) 值打包到单个 ULONG 中。 最低顺序字节定义前台光栅操作;下一个字节定义背景光栅操作。 有关光栅操作代码的详细信息,请参阅Microsoft Windows SDK文档。

要求

   
目标平台 台式机
标头 winddi.h (包括 Winddi.h)

另请参阅

CLIPOBJ

DEVINFO

DrvFillPath

LINEATTRS

PATHOBJ

XFORMOBJ