图形对象具有一般图元对象的一切属性和行为特征。图形对象结构如图 46 所示。
图形对象属性说明见表 35。
名称 | 类型 | 说明 | 备注 | 章节 |
---|---|---|---|---|
ID | ST_ID | 不能与已有标识重复 | 必选 | |
AbbreviatedData | string | 图形轮廓数据,由一系列紧缩的操作符和操作数构成 | 必选 | |
Boundary | ST_Box | 矩形边界 | 必选 | eg: 0 0 210 297 |
Stroke | boolean | 图形是否被勾边默认值为true | 可选 | |
Fill | boolean | 图形的填充规则,默认值为true | 可选 | |
Rule | string | 图形的填充规则,当填充(Fill)属性存在时出现 可选值为 NonZcro 和Even-Odd 默认值为 NonZcro |
可选 | 9.2 填充规则 |
FillColor | Color | 填充颜色默认为透明色 | 可选 | 8.3.2基本颜色 |
StrokeColor | Color | 勾边颜色默认为黑色 | 可选 | 8.3.2基本颜色 |
操作符 | 操作数 | 说明 |
---|---|---|
S | x y | 定义子绘制图形边线的起始点坐标(x,y) |
M | x y | 将当前点移动到指定点(x,y) |
L | x y | 从当前点连接一条到指定点(x,y)的线段,并将当前点移动到指定点 |
Q | x1 y1 x2 y2 | 从当前点连接一条到点(x1,y1)的二次贝塞尔曲线,并将当前点移动到点(x2,y2),此贝塞尔曲线使用点(x1,y1)作为其控制点 |
B | x1 y1 x2 y2 x3 y3 | 从当前点连接一条到点(x3,y3)的三次贝塞尔曲线,并将当前点移动到点(x3,y3),此贝塞尔曲线使用点(x1,y1)和点(x2,y2)作为其控制点 |
A | rx ry angle large sweep x y |
rx表示椭圆的长轴长度,ry表示椭圆的短轴长度。 sweep为1时表示由圆弧起始点到结束点是顺时针旋转,为0时表示由圆弧起始点到结束点是逆时针旋转 从当前点连接一条到点(x,y)的圆弧,并将当前点移动到点(x,y)。 |
C | SubPath自动闭合,表示将当前点和SubPath的起始点用线段直接连接 |
参考XML如下:
<?xml version="1.0" encoding="utf-8"?>
<ofd:PageBlock ID="5">
<ofd:PathObject ID="6" Boundary="4.3757 17.5597 201.2753 106.2634" Rule="Even-Odd" Fill="false" Stroke="true" LineWidth="0.2500999867916107" Cap="Butt" Join="Miter" MiterLimit="3.5278000831604004">
<ofd:StrokeColor Value="156 82 34" Alpha="255" />
<ofd:Clips TransFlag="false" />
<ofd:AbbreviatedData>M 171.1464 34.1293 L 171.1464 78.1348 M 160.1451 34.1293 L 160.1451 78.1348 M 130.1413 34.1293 L
130.1413 78.1348 M 110.1388 34.1293 L 110.1388 78.1348 M 90.1363 34.1293 L 90.1363 78.1348 M 78.1348 34.1293 L 78.1348 78.1348
M 52.1316 34.1293 L 52.1316 86.1358 M 120.1401 86.1358 L 120.1401 106.1383 M 115.1394 86.1358 L 115.1394 106.1383
M 8.1261 86.1358 L 8.1261 106.1383 M 120.1401 12.1266 L 120.1401 34.1293 M 115.1394 12.1266 L 115.1394 34.1293 M 8.1261 12.1266 L 8.1261 34.1293 M 201.1502 12.1266 L 201.1502 106.1383 M 0.1251 12.1266
L 0.1251 106.1383 M 0.1251 106.1383 L 201.1502 106.1383 M 0.1251 86.1358 L 201.1502 86.1358 M 0.1251 78.1348 L 201.1502 78.1348 M 0.1251 34.1293 L 201.1502 34.1293
M 0.1251 12.1266 L 201.1502 12.1266 M 64.1331 1.1252 L 137.1422 1.1252 M 64.1331 0.1251 L 137.1422 0.1251</ofd:AbbreviatedData>
</ofd:PathObject>
</ofd:PageBlock>
图形对象采用两种规则填充:非零绕数规则和奇偶规则
当值为NonZero即非零绕数规则时,填充遵循如下原则:从所需判断的点处向任意方向无穷远处引一条射线,同时引人一个初始值为0的计数,射线每经过一条由左至右方向的线型时计数加1,射线每经过一条由右至左方向的线型时则计数减1,如果每条射线总计数均为0,则判断该点在路径外部,反之,则该点在路径内部,如图47所示。
当值为Even-Odd即奇偶规则时,填充遵循如下原则:从所需判断的点处向任意方向无穷远处引一条射线,同时引人一个初始值为0的计数,射线每经过任意线型时计数加1,如果每条射线总计数均为奇数,则判断该点在路径内部,反之,则该点在路径外部,如图48所示
奇偶规则示意图图48
暂时忽略。