PATHOBJ 结构 (winddi.h)

PATHOBJ 结构用于描述要笔划或填充的一组线条和贝塞尔曲线。

语法

typedef struct _PATHOBJ {
  FLONG fl;
  ULONG cCurves;
} PATHOBJ;

成员

fl

描述路径的一组提示标志。 此成员是按位 OR (,) 以下值存在某些限制:

标志 描述
PO_ALL_INTEGERS 路径的顶点具有没有小数部分的整数坐标。 此标志主要用作加速器,以便驱动程序可以使用更简单的全整数快速路径。

此外,当 GDI 设置此标志时,允许驱动程序稍微偏离基于 NT 的标准操作系统 GDI 网格交集量化 (GIQ) 约定,该约定规定线的光栅化规则。 具体而言,设置PO_ALL_INTEGERS时,驱动程序可以选择自己的规则,在平线情况下,应为哪个像素点燃。 通常,此标志允许驱动程序使用硬件点到点线条绘制功能,即使硬件具有不同于 GIQ 的断线规则。

GDI 仅为一个像素宽的实线设置此标志。 此外,仅当设备上下文的图形模式设置为“GM_COMPATIBLE”时,GDI 才会设置此标志。 有关设置图形模式的详细信息,请参阅 Microsoft Window SDK 文档中的 SetGraphicsMode

PO_BEZIERS 路径包含贝塞尔曲线。 GDI 仅在 fl 成员中设置PO_BEZIERS或PO_ELLIPSE之一。
PO_ELLIPSE 路径由路径的边界矩形中刻有一个椭圆组成。 GDI 仅在 fl 成员中设置PO_BEZIERS或PO_ELLIPSE之一。
PO_ENUM_AS_INTEGERS 驱动程序可以请求以 32 位整数格式(而不是标准 28.4 格式)表示从 PATHOBJ_bEnum 返回的顶点。 在调用PATHOBJ_bEnum之前,驱动程序通过 ORing PO_ENUM_AS_INTEGERS发出此请求到给定 PATHOBJ 的 fl 成员中。

仅当 GDI 设置了 PO_ALL_INTEGERS 标志时,驱动程序才能设置PO_ENUM_AS_INTEGERS。 也就是说,必须知道路径才能仅包含整数坐标。 请注意,PO_ENUM_AS_INTEGERS是唯一允许驱动程序修改的标志。

设置此标志后,允许驱动程序略微偏离指示线条光栅化规则的标准 GIQ 约定。 具体而言,在设置PO_ENUM_ALL_INTEGERS时,驱动程序可以选择自己的规则,在平线情况下,一条线在逻辑上恰好位于两个像素之间,应为哪个像素点亮。 通常,此标志允许驱动程序使用硬件点到点线条绘制功能,即使硬件具有不同于 GIQ 的断线规则。

cCurves

构成路径的线条数和贝塞尔曲线数。

注解

与此结构关联的函数允许为驱动程序枚举线条和曲线。

为 PATHOBJ 对象提供了以下 GDI 服务例程:

PATHOBJ_bCloseFigure
PATHOBJ_bEnum
PATHOBJ_bEnumClipLines
PATHOBJ_bMoveTo
PATHOBJ_bPolyBezierTo
PATHOBJ_bPolyLineTo
PATHOBJ_vEnumStart
PATHOBJ_vEnumStartClipLines
PATHOBJ_vGetBounds

要求

要求
Header winddi.h (包括 Winddi.h)

另请参阅

DrvFillPath

DrvStrokeAndFillPath

DrvStrokePath

EngCreatePath

EngDeletePath