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