• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Class (PathIterator)
2
3<!--Kit: ArkGraphics 2D-->
4<!--Subsystem: Graphics-->
5<!--Owner: @hangmengxin-->
6<!--Designer: @wangyanglan-->
7<!--Tester: @nobuggers-->
8<!--Adviser: @ge-yafang-->
9
10> **说明:**
11>
12> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
13>
14> - 本Class首批接口从API version 18开始支持。
15>
16> - 本模块使用屏幕物理像素单位px。
17>
18> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。
19
20表示路径操作迭代器,可通过遍历迭代器读取path的操作指令。
21
22## 导入模块
23
24```ts
25import { drawing } from '@kit.ArkGraphics2D';
26```
27
28## constructor<sup>18+</sup>
29
30constructor(path: Path)
31
32构造迭代器并绑定路径。
33
34**系统能力:** SystemCapability.Graphics.Drawing
35
36**参数:**
37
38| 参数名   | 类型                                         | 必填 | 说明                            |
39| -------- | -------------------------------------------- | ---- | ------------------------------- |
40| path | [Path](arkts-apis-graphics-drawing-Path.md) | 是   | 迭代器绑定的路径对象。                 |
41
42**示例:**
43
44```ts
45import { drawing } from '@kit.ArkGraphics2D';
46
47let path: drawing.Path = new drawing.Path();
48let iter: drawing.PathIterator = new drawing.PathIterator(path);
49```
50
51## next<sup>18+</sup>
52
53next(points: Array<common2D.Point>, offset?: number): PathIteratorVerb
54
55返回当前路径的下一个操作,并将迭代器置于该操作。
56
57**系统能力:** SystemCapability.Graphics.Drawing
58
59**参数:**
60
61| 参数名   | 类型                                         | 必填 | 说明                            |
62| -------- | -------------------------------------------- | ---- | ------------------------------- |
63| points | Array\<[common2D.Point](js-apis-graphics-common2D.md#point12)>   | 是   | 坐标点数组,长度必须至少为偏移量加4,以确保能容纳所有类型的路径数据。操作执行后,该数组会被覆盖。填入的坐标点数量取决于操作类型,其中,MOVE填入1个坐标点,LINE填入2个坐标点,QUAD填入3个坐标点,CONIC填入3个坐标点 + 1个权重值(共3.5组),CUBIC填入4个坐标点,CLOSE和DONE不填入任何点。 |
64| offset | number   | 否   | 数组中写入位置相对起始点的偏移量,默认为0,取值范围为[0, size-4],size是指坐标点数组长度。 |
65
66**返回值:**
67
68| 类型                  | 说明           |
69| --------------------- | -------------- |
70| [PathIteratorVerb](arkts-apis-graphics-drawing-e.md#pathiteratorverb18) | 迭代器包含的路径操作类型。 |
71
72**错误码:**
73
74以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
75
76| 错误码ID | 错误信息 |
77| ------- | --------------------------------------------|
78| 401 | Parameter error.Possible causes:1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
79
80**示例:**
81
82```ts
83import { common2D, drawing } from '@kit.ArkGraphics2D';
84
85let path: drawing.Path = new drawing.Path();
86path.moveTo(10, 20);
87let iter: drawing.PathIterator = new drawing.PathIterator(path);
88let verbStr: Array<string> = ["MOVE", "LINE", "QUAD", "CONIC", "CUBIC", "CLOSE", "DONE"];
89let pointCount: Array<number> = [1,2,3,4,4,0,0]; //1,2,3,3.5,4,0,0
90let points: Array<common2D.Point> = [{x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}];
91let offset = 0;
92let verb = iter.next(points, offset);
93let outputMessage: string = "pathIteratorNext: ";
94outputMessage += "verb =" + verbStr[verb] + "; has " + pointCount[verb] + " pairs: ";
95for (let j = 0; j < pointCount[verb] + offset; j++) {
96  outputMessage += "[" + points[j].x + ", " + points[j].y + "]";
97}
98console.info(outputMessage);
99```
100
101## peek<sup>18+</sup>
102
103peek(): PathIteratorVerb
104
105返回当前路径的下一个操作,迭代器保持在原操作。
106
107**系统能力:** SystemCapability.Graphics.Drawing
108
109**返回值:**
110
111| 类型                  | 说明           |
112| --------------------- | -------------- |
113| [PathIteratorVerb](arkts-apis-graphics-drawing-e.md#pathiteratorverb18) | 迭代器包含的路径操作类型。 |
114
115**示例:**
116
117```ts
118import { drawing } from '@kit.ArkGraphics2D';
119
120let path: drawing.Path = new drawing.Path();
121let iter: drawing.PathIterator = new drawing.PathIterator(path);
122let res = iter.peek();
123```
124
125## hasNext<sup>18+</sup>
126
127hasNext(): boolean
128
129判断路径操作迭代器中是否还有下一个操作。
130
131**系统能力:** SystemCapability.Graphics.Drawing
132
133**返回值:**
134
135| 类型    | 说明           |
136| ------- | -------------- |
137| boolean | 判断路径操作迭代器中是否还有下一个操作。true表示有,false表示没有。 |
138
139**示例:**
140
141```ts
142import { drawing } from '@kit.ArkGraphics2D';
143
144let path: drawing.Path = new drawing.Path();
145let iter: drawing.PathIterator = new drawing.PathIterator(path);
146let res = iter.hasNext();
147```