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) |