由直线、圆弧、二阶贝塞尔、三阶贝塞尔组成的复合几何路径。

说明

* 本模块首批接口从API version 11开始支持。后续版本的新增接口，采用上角标单独标记接口的起始版本。
* 本模块使用屏幕物理像素单位px。
* 本模块为单线程模型策略，需要调用方自行管理线程安全和上下文状态的切换。

## 导入模块

PhonePC/2in1TabletTVWearable



```
1. import { drawing } from '@kit.ArkGraphics2D';
```

## constructor12+

PhonePC/2in1TabletTVWearable

constructor()

构造一个路径。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
```

## constructor12+

PhonePC/2in1TabletTVWearable

constructor(path: Path)

构造一个已有路径的副本。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| path | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 待复制的路径对象。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(0, 0);
5. path.lineTo(0, 700);
6. path.lineTo(700, 0);
7. path.close();
8. let path1: drawing.Path =  new drawing.Path(path);
```

## set20+

PhonePC/2in1TabletTVWearable

set(src: Path): void

使用另一个路径对当前路径进行更新。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| src | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 用于更新的路径。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';
2. let path: drawing.Path = new drawing.Path();
3. path.moveTo(0, 0);
4. path.lineTo(0, 700);
5. path.lineTo(700, 0);
6. path.close();
7. let path1: drawing.Path = new drawing.Path();
8. path1.set(path);
```

## moveTo

PhonePC/2in1TabletTVWearable

moveTo(x: number, y: number) : void

设置自定义路径的起始点位置。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x | number | 是 | 起始点的x轴坐标，该参数为浮点数。 |
| y | number | 是 | 起始点的y轴坐标，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
```

## lineTo

PhonePC/2in1TabletTVWearable

lineTo(x: number, y: number) : void

添加一条从路径的最后点位置（若路径没有内容则默认为 (0, 0)）到目标点位置的线段。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x | number | 是 | 目标点的x轴坐标，该参数为浮点数。 |
| y | number | 是 | 目标点的y轴坐标，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.lineTo(10, 15);
```

## arcTo

PhonePC/2in1TabletTVWearable

arcTo(x1: number, y1: number, x2: number, y2: number, startDeg: number, sweepDeg: number): void

给路径添加一段弧线，绘制弧线的方式为角度弧，该方式首先会指定一个矩形边框，取其内切椭圆，然后会指定一个起始角度和扫描度数，从起始角度扫描截取的椭圆周长一部分即为绘制的弧线。另外会默认添加一条从路径的最后点位置到弧线起始点位置的线段。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x1 | number | 是 | 矩形左上角的x坐标，该参数为浮点数。 |
| y1 | number | 是 | 矩形左上角的y坐标，该参数为浮点数。 |
| x2 | number | 是 | 矩形右下角的x坐标，该参数为浮点数。 |
| y2 | number | 是 | 矩形右下角的y坐标，该参数为浮点数。 |
| startDeg | number | 是 | 起始的角度。角度的起始方向（0°）为x轴正方向。 |
| sweepDeg | number | 是 | 扫描的度数，为正数时顺时针扫描，为负数时逆时针扫描。实际扫描的度数为该入参对360取模的结果。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.arcTo(10, 15, 10, 10, 10, 10);
```

## quadTo

PhonePC/2in1TabletTVWearable

quadTo(ctrlX: number, ctrlY: number, endX: number, endY: number): void

添加从路径最后点位置（若路径没有内容则为 (0, 0)）到目标点位置的二阶贝塞尔曲线。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| ctrlX | number | 是 | 控制点的x坐标，该参数为浮点数。 |
| ctrlY | number | 是 | 控制点的y坐标，该参数为浮点数。 |
| endX | number | 是 | 目标点的x坐标，该参数为浮点数。 |
| endY | number | 是 | 目标点的y坐标，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.quadTo(10, 15, 10, 10);
```

## conicTo12+

PhonePC/2in1TabletTVWearable

conicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void

在当前路径上添加一条路径最后点位置（若路径没有内容则默认为 (0, 0)）到目标点位置的圆锥曲线，其控制点为 (ctrlX, ctrlY)，结束点为 (endX, endY)。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| ctrlX | number | 是 | 控制点的x坐标，该参数为浮点数。 |
| ctrlY | number | 是 | 控制点的y坐标，该参数为浮点数。 |
| endX | number | 是 | 目标点的x坐标，该参数为浮点数。 |
| endY | number | 是 | 目标点的y坐标，该参数为浮点数。 |
| weight | number | 是 | 表示曲线权重，决定了曲线的形状。值越大，曲线越接近控制点。小于等于0时，效果与[lineTo](/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path#lineto)相同；值为1时，效果与[quadTo](/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path#quadto)相同。该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.conicTo(200, 400, 100, 200, 0);
```

## cubicTo

PhonePC/2in1TabletTVWearable

cubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void

添加一条从路径最后点位置（若路径没有内容则默认为 (0, 0)）到目标点位置的三阶贝塞尔圆滑曲线。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| ctrlX1 | number | 是 | 第一个控制点的x坐标，该参数为浮点数。 |
| ctrlY1 | number | 是 | 第一个控制点的y坐标，该参数为浮点数。 |
| ctrlX2 | number | 是 | 第二个控制点的x坐标，该参数为浮点数。 |
| ctrlY2 | number | 是 | 第二个控制点的y坐标，该参数为浮点数。 |
| endX | number | 是 | 目标点的x坐标，该参数为浮点数。 |
| endY | number | 是 | 目标点的y坐标，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.cubicTo(100, 100, 80, 150, 300, 150);
```

## rMoveTo12+

PhonePC/2in1TabletTVWearable

rMoveTo(dx: number, dy: number): void

设置一个相对于当前路径终点（若路径没有内容则默认为 (0, 0)）的路径起始点位置。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| dx | number | 是 | 路径新起始点相对于当前路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| dy | number | 是 | 路径新起始点相对于当前路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.rMoveTo(10, 10);
```

## rLineTo12+

PhonePC/2in1TabletTVWearable

rLineTo(dx: number, dy: number): void

使用相对位置在当前路径上添加一条当前路径终点（若路径没有内容则默认为 (0, 0)）到目标点位置的线段。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| dx | number | 是 | 目标点相对于当前路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| dy | number | 是 | 目标点相对于当前路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.rLineTo(400, 200);
```

## rQuadTo12+

PhonePC/2in1TabletTVWearable

rQuadTo(dx1: number, dy1: number, dx2: number, dy2: number): void

使用相对位置在当前路径上添加一条当前路径终点（若路径没有内容则默认为 (0, 0)）到目标点位置的二阶贝塞尔曲线。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| dx1 | number | 是 | 控制点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| dy1 | number | 是 | 控制点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |
| dx2 | number | 是 | 目标点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| dy2 | number | 是 | 目标点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.rQuadTo(100, 0, 0, 200);
```

## rConicTo12+

PhonePC/2in1TabletTVWearable

rConicTo(ctrlX: number, ctrlY: number, endX: number, endY: number, weight: number): void

使用相对位置在当前路径上添加一条路径终点（若路径没有内容则默认为 (0, 0)）到目标点位置的圆锥曲线。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| ctrlX | number | 是 | 控制点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| ctrlY | number | 是 | 控制点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |
| endX | number | 是 | 目标点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| endY | number | 是 | 目标点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |
| weight | number | 是 | 表示曲线的权重，决定了曲线的形状，越大越接近控制点。若小于等于0则等同于使用[rLineTo](/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path#rlineto12)添加一条到结束点的线段，若为1则等同于[rQuadTo](/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path#rquadto12)，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.rConicTo(200, 400, 100, 200, 0);
```

## rCubicTo12+

PhonePC/2in1TabletTVWearable

rCubicTo(ctrlX1: number, ctrlY1: number, ctrlX2: number, ctrlY2: number, endX: number, endY: number): void

使用相对位置在当前路径上添加一条当前路径终点（若路径没有内容则默认为 (0, 0)）到目标点位置的三阶贝塞尔曲线。

**元服务API：** 从API version 22开始，该接口支持在元服务中使用。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| ctrlX1 | number | 是 | 第一个控制点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| ctrlY1 | number | 是 | 第一个控制点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |
| ctrlX2 | number | 是 | 第二个控制点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| ctrlY2 | number | 是 | 第二个控制点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |
| endX | number | 是 | 目标点相对于路径终点的x轴偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| endY | number | 是 | 目标点相对于路径终点的y轴偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.rCubicTo(200, 0, 0, 200, -20, 0);
```

## addArc12+

PhonePC/2in1TabletTVWearable

addArc(rect: common2D.Rect, startAngle: number, sweepAngle: number): void

向路径添加一段圆弧。

当startAngle和sweepAngle同时满足以下两种情况时，添加整个椭圆而不是圆弧：

1.startAngle对90取余接近于0；

2.sweepAngle不在(-360, 360)区间内。

其余情况sweepAngle会对360取余后添加圆弧。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| rect | [common2D.Rect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#rect) | 是 | 包含弧的椭圆的矩形边界。 |
| startAngle | number | 是 | 弧的起始角度，单位为度，0度为x轴正方向，该参数为浮点数。 |
| sweepAngle | number | 是 | 扫描角度，单位为度。正数表示顺时针方向，负数表示逆时针方向，该参数为浮点数。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
5. path.addArc(rect, 90, 180);
```

## addCircle12+

PhonePC/2in1TabletTVWearable

addCircle(x: number, y: number, radius: number, pathDirection?: PathDirection): void

按指定方向，向路径添加圆形，圆的起点位于(x + radius, y)。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x | number | 是 | 表示圆心的x轴坐标，该参数为浮点数。 |
| y | number | 是 | 表示圆心的y轴坐标，该参数为浮点数。 |
| radius | number | 是 | 表示圆形的半径，该参数为浮点数，小于等于0时不会有任何效果。 |
| pathDirection | [PathDirection](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathdirection12) | 否 | 表示路径方向，默认为顺时针方向。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.addCircle(100, 200, 50, drawing.PathDirection.CLOCKWISE);
```

## addOval12+

PhonePC/2in1TabletTVWearable

addOval(rect: common2D.Rect, start: number, pathDirection?: PathDirection): void

按指定方向，将矩形的内切椭圆添加到路径中。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| rect | [common2D.Rect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#rect) | 是 | 椭圆的矩形边界。 |
| start | number | 是 | 表示椭圆初始点的索引，0，1，2，3分别对应椭圆的上端点，右端点，下端点，左端点，该参数为不小于0的整数，大于等于4时会对4取余。 |
| pathDirection | [PathDirection](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathdirection12) | 否 | 表示路径方向，默认为顺时针方向。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
5. path.addOval(rect, 5, drawing.PathDirection.CLOCKWISE);
```

## addRect12+

PhonePC/2in1TabletTVWearable

addRect(rect: common2D.Rect, pathDirection?: PathDirection): void

按指定方向，将矩形添加到路径中，添加的路径的起始点为矩形左上角。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| rect | [common2D.Rect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#rect) | 是 | 向路径中添加的矩形轮廓。 |
| pathDirection | [PathDirection](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathdirection12) | 否 | 表示路径方向，默认为顺时针方向。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
5. path.addRect(rect, drawing.PathDirection.CLOCKWISE);
```

## addRoundRect12+

PhonePC/2in1TabletTVWearable

addRoundRect(roundRect: RoundRect, pathDirection?: PathDirection): void

按指定方向，向路径添加圆角矩形轮廓。路径添加方向为顺时针时，起始点位于圆角矩形左下方圆角与左边界的交点；路径添加方向为逆时针时，起始点位于圆角矩形左上方圆角与左边界的交点。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| roundRect | [RoundRect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-roundrect) | 是 | 圆角矩形对象。 |
| pathDirection | [PathDirection](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathdirection12) | 否 | 表示路径方向，默认为顺时针方向。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
5. let roundRect = new drawing.RoundRect(rect, 50, 50);
6. path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
```

## addPath12+

PhonePC/2in1TabletTVWearable

addPath(path: Path, matrix?: Matrix | null): void

对源路径进行矩阵变换后，将其添加到当前路径中。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| path | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 表示源路径对象。 |
| matrix | [Matrix](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-matrix)|null | 否 | 表示矩阵对象，默认为单位矩阵。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. let matrix = new drawing.Matrix();
5. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
6. let roundRect = new drawing.RoundRect(rect, 50, 50);
7. path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
8. let dstPath = new drawing.Path();
9. dstPath.addPath(path, matrix);
```

## transform12+

PhonePC/2in1TabletTVWearable

transform(matrix: Matrix): void

对路径进行矩阵变换。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| matrix | [Matrix](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-matrix) | 是 | 表示矩阵对象。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. let matrix = new drawing.Matrix();
5. matrix.setScale(1.5, 1.5, 10, 10);
6. const rect: common2D.Rect = {left:100, top:100, right:500, bottom:500};
7. let roundRect = new drawing.RoundRect(rect, 50, 50);
8. path.addRoundRect(roundRect, drawing.PathDirection.CLOCKWISE);
9. path.transform(matrix);
```

## contains12+

PhonePC/2in1TabletTVWearable

contains(x: number, y: number): boolean

判断指定坐标点是否被路径包含，判定是否被路径包含的规则参考[PathFillType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathfilltype12)。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x | number | 是 | x轴上坐标点，该参数必须为浮点数。 |
| y | number | 是 | y轴上坐标点，该参数必须为浮点数。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回指定坐标点是否在路径内。true表示点在路径内，false表示点不在路径内。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. let rect : common2D.Rect = {left: 50, top: 50, right: 250, bottom: 250};
5. path.addRect(rect, drawing.PathDirection.CLOCKWISE);
6. console.info("test contains: " + path.contains(0, 0));
7. console.info("test contains: " + path.contains(60, 60));
```

## setLastPoint20+

PhonePC/2in1TabletTVWearable

setLastPoint(x: number, y: number): void

修改路径的最后一个点。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| x | number | 是 | 指定点的x轴坐标，该参数为浮点数。0表示坐标原点，负数表示位于坐标原点左侧，正数表示位于坐标原点右侧。 |
| y | number | 是 | 指定点的y轴坐标，该参数为浮点数。0表示坐标原点，负数表示位于坐标原点上侧，正数表示位于坐标原点下侧。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';
2. const path = new drawing.Path();
3. path.moveTo(0, 0);
4. path.lineTo(0, 700);
5. let isEmpty = path.isEmpty();
6. console.info('isEmpty:', isEmpty);
7. path.reset();
8. isEmpty = path.isEmpty();
9. console.info('isEmpty:', isEmpty);
10. path.setLastPoint(50, 50);
11. isEmpty = path.isEmpty();
12. console.info('isEmpty:', isEmpty);
```

## setFillType12+

PhonePC/2in1TabletTVWearable

setFillType(pathFillType: PathFillType): void

设置路径的填充类型，决定路径内部区域的定义方式。例如，使用Winding填充类型时，路径内部区域由路径环绕的次数决定，而使用EvenOdd填充类型时，路径内部区域由路径环绕的次数是否为奇数决定。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| pathFillType | [PathFillType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathfilltype12) | 是 | 表示路径填充规则。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.setFillType(drawing.PathFillType.WINDING);
```

## getFillType20+

PhonePC/2in1TabletTVWearable

getFillType(): PathFillType

获取路径的填充类型。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| [PathFillType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathfilltype12) | 路径填充类型。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';
2. const path = new drawing.Path();
3. path.setFillType(drawing.PathFillType.WINDING);
4. let type = path.getFillType();
5. console.info("type :" + type);
```

## getBounds12+

PhonePC/2in1TabletTVWearable

getBounds(): common2D.Rect

获取包含路径的最小矩形边界。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| [common2D.Rect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#rect) | 包含路径的最小矩形区域。 |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.lineTo(50, 40)
5. let rect : common2D.Rect = {left: 0, top: 0, right: 0, bottom: 0};
6. rect = path.getBounds();
7. console.info("test rect.left: " + rect.left);
8. console.info("test rect.top: " + rect.top);
9. console.info("test rect.right: " + rect.right);
10. console.info("test rect.bottom: " + rect.bottom);
```

## addPolygon12+

PhonePC/2in1TabletTVWearable

addPolygon(points: Array<common2D.Point>, close: boolean): void

通过坐标点列表添加多条连续的线段。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| points | Array<[common2D.Point](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#point12)> | 是 | 坐标点数组。 |
| close | boolean | 是 | 表示是否将路径闭合，即是否添加路径起始点到终点的连线。true表示将路径闭合，false表示不将路径闭合。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let pointsArray = new Array<common2D.Point>();
4. const point1: common2D.Point = { x: 200, y: 200 };
5. const point2: common2D.Point = { x: 400, y: 200 };
6. const point3: common2D.Point = { x: 100, y: 400 };
7. const point4: common2D.Point = { x: 300, y: 400 };
8. pointsArray.push(point1);
9. pointsArray.push(point2);
10. pointsArray.push(point3);
11. pointsArray.push(point4);
12. const path = new drawing.Path();
13. path.addPolygon(pointsArray, false);
```

## offset12+

PhonePC/2in1TabletTVWearable

offset(dx: number, dy: number): Path

将路径沿着x轴和y轴方向偏移一定距离并保存在返回的路径对象中。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| dx | number | 是 | x轴方向偏移量，正数往x轴正方向偏移，负数往x轴负方向偏移，该参数为浮点数。 |
| dy | number | 是 | y轴方向偏移量，正数往y轴正方向偏移，负数往y轴负方向偏移，该参数为浮点数。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 返回当前路径偏移(dx,dy)后生成的新路径对象。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. path.moveTo(200, 200);
5. path.lineTo(300, 300);
6. const dst = path.offset(200, 200);
```

## op12+

PhonePC/2in1TabletTVWearable

op(path: Path, pathOp: PathOp): boolean

将当前路径置为和path按照指定的路径操作类型合并后的结果。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| path | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 路径对象，用于与当前路径合并。 |
| pathOp | [PathOp](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathop12) | 是 | 路径操作类型枚举。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回路径合并是否成功的结果。true表示合并成功，false表示合并失败。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types;3.Parameter verification failed. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. const path = new drawing.Path();
4. const path2 = new drawing.Path();
5. path.addCircle(100, 200, 100, drawing.PathDirection.CLOCKWISE);
6. console.info("get pathOp: ", path2.op(path, drawing.PathOp.DIFFERENCE));
```

## close

PhonePC/2in1TabletTVWearable

close(): void

闭合路径，会添加一条从路径起点位置到最后点位置的线段。

**系统能力：** SystemCapability.Graphics.Drawing

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.cubicTo(10, 10, 10, 10, 15, 15);
6. path.close();
```

## reset

PhonePC/2in1TabletTVWearable

reset(): void

重置自定义路径数据。

**系统能力：** SystemCapability.Graphics.Drawing

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.cubicTo(10, 10, 10, 10, 15, 15);
6. path.reset();
```

## rewind20+

PhonePC/2in1TabletTVWearable

rewind(): void

将路径内添加的各类点/线清空，但是保留内存空间。

**系统能力：** SystemCapability.Graphics.Drawing

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';
2. let path = new drawing.Path();
3. path.moveTo(10,10);
4. path.lineTo(20,20);
5. path.rewind();
6. let empty = path.isEmpty();
7. console.info('empty : ', empty);
```

## isEmpty20+

PhonePC/2in1TabletTVWearable

isEmpty(): boolean

判断路径是否为空。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 路径是否为空。true表示当前路径为空，false表示路径不为空。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';
2. let path = new drawing.Path();
3. path.moveTo(10,10);
4. path.lineTo(20,20);
5. let isEmpty = path.isEmpty();
6. console.info('isEmpty:', isEmpty);
```

## isRect20+

PhonePC/2in1TabletTVWearable

isRect(rect: common2D.Rect | null): boolean

判断路径是否构成矩形。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| rect | [common2D.Rect](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#rect)| null | 是 | 矩形对象，作为出参使用，路径构成矩形时，会被改写为路径表示的矩形，否则不会改变。可以为null，表示无需获取路径表示的矩形。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回路径是否构成矩形。true表示路径构成矩形，false表示路径不构成矩形。 |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.moveTo(10,10);
5. path.lineTo(20,10);
6. let isRect = path.isRect(null);
7. console.info("isRect: ", isRect);
8. let rect: common2D.Rect = { left : 100, top : 100, right : 400, bottom : 500 };
9. path.lineTo(20, 20);
10. path.lineTo(10, 20);
11. path.lineTo(10, 10);
12. isRect = path.isRect(rect);
13. console.info('isRect: ', isRect);
```

## getLength12+

PhonePC/2in1TabletTVWearable

getLength(forceClosed: boolean): number

获取路径长度。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| forceClosed | boolean | 是 | 表示是否按照闭合路径测量，true表示测量时路径会被强制视为已闭合，false表示会根据路径的实际闭合状态测量。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| number | 路径长度。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path = new drawing.Path();
4. path.arcTo(20, 20, 180, 180, 180, 90);
5. let len = path.getLength(false);
6. console.info("path length = " + len);
```

## getPositionAndTangent12+

PhonePC/2in1TabletTVWearable

getPositionAndTangent(forceClosed: boolean, distance: number, position: common2D.Point, tangent: common2D.Point): boolean

获取路径起始点指定距离处的坐标点和切线值。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| forceClosed | boolean | 是 | 表示是否按照闭合路径测量，true表示测量时路径会被强制视为已闭合，false表示会根据路径的实际闭合状态测量。 |
| distance | number | 是 | 表示与路径起始点的距离，小于0时会被视作0，大于路径长度时会被视作路径长度。该参数为浮点数。 |
| position | [common2D.Point](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#point12) | 是 | 存储获取到的距离路径起始点distance处的点的坐标。 |
| tangent | [common2D.Point](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-graphics-common2d#point12) | 是 | 存储获取到的距离路径起始点distance处的点的切线值，tangent.x表示该点切线的余弦值，tangent.y表示该点切线的正弦值。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 表示是否成功获取距离路径起始点distance处的点的坐标和正切值的结果。true表示获取成功，false表示获取失败，position和tangent不会被改变。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error.Possible causes:1.Mandatory parameters are left unspecified;2.Incorrect parameter types. |

**示例：**



```
1. import { common2D, drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(0, 0);
5. path.lineTo(0, 700);
6. path.lineTo(700, 0);
7. let position: common2D.Point = { x: 0.0, y: 0.0 };
8. let tangent: common2D.Point = { x: 0.0, y: 0.0 };
9. if (path.getPositionAndTangent(false, 0.1, position, tangent)) {
10. console.info("getPositionAndTangent-----position:  "+ position.x);
11. console.info("getPositionAndTangent-----position:  "+ position.y);
12. console.info("getPositionAndTangent-----tangent:  "+ tangent.x);
13. console.info("getPositionAndTangent-----tangent:  "+ tangent.y);
14. }
```

## getSegment18+

PhonePC/2in1TabletTVWearable

getSegment(forceClosed: boolean, start: number, stop: number, startWithMoveTo: boolean, dst: Path): boolean

截取路径的片段并追加到目标路径上。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| forceClosed | boolean | 是 | 表示是否按照闭合路径测量，true表示测量时路径会被强制视为已闭合，false表示会根据路径的实际闭合状态测量。 |
| start | number | 是 | 表示与路径起始点的距离，距离路径起始点start距离的位置即为截取路径片段的起始点，小于0时会被视作0，大于等于stop时会截取失败。该参数为浮点数。 |
| stop | number | 是 | 表示与路径起始点的距离，距离路径起始点stop距离的位置即为截取路径片段的终点，小于等于start时会截取失败，大于路径长度时会被视作路径长度。该参数为浮点数。 |
| startWithMoveTo | boolean | 是 | 表示是否在目标路径执行[moveTo](/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path#moveto)移动到截取路径片段的起始点位置。true表示执行，false表示不执行。 |
| dst | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 目标路径，截取成功时会将得到的路径片段追加到目标路径上，截取失败时不做改变。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 表示是否成功截取路径片段。true表示截取成功，false表示截取失败。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(0, 0);
5. path.lineTo(0, 700);
6. path.lineTo(700, 0);
7. let dstPath: drawing.Path = new drawing.Path();
8. console.info("getSegment-----result:  "+ path.getSegment(true, 10.0, 20.0, true, dstPath));
```

## isClosed12+

PhonePC/2in1TabletTVWearable

isClosed(): boolean

获取路径是否闭合。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 表示当前路径是否闭合，true表示闭合，false表示不闭合。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(0, 0);
5. path.lineTo(0, 700);
6. if (path.isClosed()) {
7. console.info("path is closed.");
8. } else {
9. console.info("path is not closed.");
10. }
```

## getMatrix12+

PhonePC/2in1TabletTVWearable

getMatrix(forceClosed: boolean, distance: number, matrix: Matrix, flags: PathMeasureMatrixFlags): boolean

在路径上的某个位置，获取一个变换矩阵，用于表示该点的坐标和朝向。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| forceClosed | boolean | 是 | 表示是否按照闭合路径测量，true表示测量时路径会被强制视为已闭合，false表示会根据路径的实际闭合状态测量。 |
| distance | number | 是 | 表示与路径起始点的距离，小于0时会被视作0，大于路径长度时会被视作路径长度。该参数为浮点数。 |
| matrix | [Matrix](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-matrix) | 是 | 矩阵对象，用于存储得到的矩阵。 |
| flags | [PathMeasureMatrixFlags](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-e#pathmeasurematrixflags12) | 是 | 矩阵信息维度枚举。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回是否成功获取变换矩阵的结果。true表示成功，false表示失败。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. let matrix = new drawing.Matrix();
5. if(path.getMatrix(false, 10, matrix, drawing.PathMeasureMatrixFlags.GET_TANGENT_MATRIX)) {
6. console.info("path.getMatrix return true");
7. } else {
8. console.info("path.getMatrix return false");
9. }
```

## buildFromSvgString12+

PhonePC/2in1TabletTVWearable

buildFromSvgString(str: string): boolean

解析SVG字符串表示的路径。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| str | string | 是 | SVG格式的字符串，用于描述绘制路径。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回是否成功解析SVG字符串的结果。true表示解析成功，false表示解析失败。 |

**错误码：**

以下错误码的详细介绍请参见[通用错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-universal)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 401 | Parameter error. Possible causes: Mandatory parameters are left unspecified. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. let svgStr: string =  "M150 100 L75 300 L225 300 Z";
5. if(path.buildFromSvgString(svgStr)) {
6. console.info("buildFromSvgString return true");
7. } else {
8. console.info("buildFromSvgString return false");
9. }
```

## getPathIterator18+

PhonePC/2in1TabletTVWearable

getPathIterator(): PathIterator

返回该路径的操作迭代器。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| [PathIterator](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-pathiterator) | 该路径的迭代器对象。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. let iter = path.getPathIterator();
```

## approximate20+

PhonePC/2in1TabletTVWearable

approximate(acceptableError: number): Array<number>

将当前路径转化为由连续直线段构成的近似路径。

说明

* 当acceptableError为0时，曲线路径被极度细分，会严重影响性能和内存消耗，不建议设置误差值为0。
* 当acceptableError特别大时，路径会极度简化，保留少量关键点，可能会丢失原有形状。
* 对于椭圆等曲线，当acceptableError过大时，拟合结果通常只包含椭圆的分段贝塞尔曲线的起止点，椭圆形会被极度简化为多边形。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| acceptableError | number | 是 | 表示路径上每条线段的可接受误差。该参数为浮点数，不应小于0，当参数小于0时报错。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| Array<number> | 返回包含近似路径的点的数组，至少包含两个点。每个点由三个值组成：  1. 该点所在的位置距离路径起点的长度比例值，范围为[0.0, 1.0]。  2. 点的x坐标。  3. 点的y坐标。 |

**错误码：**

以下错误码的详细介绍请参见[图形绘制与显示错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-drawing)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 25900001 | Parameter error.Possible causes: Incorrect parameter range. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(100, 100);
5. path.lineTo(500, 500);
6. let points: number[] = path.approximate(0.5);
7. for (let i = 0; i < points.length; i += 3) {
8. console.info("PathApproximate Fraction =" + points[i] + ", X =" + points[i + 1] + ", Y =" + points[i + 2] + "\n");
9. }
```

## interpolate20+

PhonePC/2in1TabletTVWearable

interpolate(other: Path, weight: number, interpolatedPath: Path): boolean

根据给定的权重，在当前路径和另一条路径之间进行插值，并将结果存储在目标路径对象中。两条路径点数相同即可插值成功，目标路径按照当前路径的结构进行创建。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| other | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 表示另一条路径对象。 |
| weight | number | 是 | 表示插值权重，必须在[0.0, 1.0]范围内。该参数为浮点数。 |
| interpolatedPath | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 表示用于存储插值结果的目标路径对象。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回插值操作是否成功的结果。true表示插值成功，false表示插值失败。 |

**错误码：**

以下错误码的详细介绍请参见[图形绘制与显示错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-drawing)。

展开

| 错误码ID | 错误信息 |
| --- | --- |
| 25900001 | Parameter error.Possible causes: Incorrect parameter range. |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(50, 50);
5. path.lineTo(100, 100);
6. path.lineTo(200, 200);
7. let other: drawing.Path = new drawing.Path();
8. other.moveTo(80, 80);
9. other.lineTo(300, 300);
10. let interpolatedPath: drawing.Path = new drawing.Path();
11. if (path.interpolate(other, 0.0, interpolatedPath)) {
12. console.info('interpolate return true');
13. } else {
14. console.info('interpolate return false');
15. }
```

## isInterpolate20+

PhonePC/2in1TabletTVWearable

isInterpolate(other: Path): boolean

判断当前路径与另一条路径在结构和操作顺序上是否完全一致，以确定两条路径是否兼容插值。若路径中包含圆锥曲线（Conic）操作，则对应操作的权重值也必须一致，才能视为兼容插值。

**系统能力：** SystemCapability.Graphics.Drawing

**参数：**

展开

| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| other | [Path](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-graphics-drawing-path) | 是 | 表示另一条路径对象。 |

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 返回当前路径与另一条路径是否兼容插值的结果。true表示兼容插值，false表示不兼容插值。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.moveTo(0, 0);
5. path.lineTo(100, 100);
6. let other: drawing.Path = new drawing.Path();
7. other.moveTo(0, 1);
8. other.lineTo(200, 200);
9. if (path.isInterpolate(other)) {
10. console.info('isInterpolate return true');
11. } else {
12. console.info('isInterpolate return false');
13. }
```

## isInverseFillType23+

PhonePC/2in1TabletTVWearable

isInverseFillType(): boolean

检查当前路径填充类型是否是反向填充类型。例如填充类型Winding、EvenOdd不是反向类型，InverseWinding、InverseEvenOdd是反向类型。

**系统能力：** SystemCapability.Graphics.Drawing

**返回值：**

展开

| 类型 | 说明 |
| --- | --- |
| boolean | 检查当前路径填充类型是否是反向填充类型。true表示是反向填充类型，false表示不是反向填充类型。 |

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.setFillType(drawing.PathFillType.WINDING);
5. if (path.isInverseFillType()) {
6. console.info("path is inverse FillType.");
7. } else {
8. console.info("path is not inverse FillType.");
9. }
```

## toggleInverseFillType23+

PhonePC/2in1TabletTVWearable

toggleInverseFillType(): void

切换路径的填充类型为反向类型。例如，使用Winding填充类型时，经过取反后填充类型为InverseWinding，而使用EvenOdd填充类型时，经过取反后填充类型为InverseEvenOdd，反之亦然。

**系统能力：** SystemCapability.Graphics.Drawing

**示例：**



```
1. import { drawing } from '@kit.ArkGraphics2D';

3. let path: drawing.Path = new drawing.Path();
4. path.setFillType(drawing.PathFillType.WINDING);
5. path.toggleInverseFillType();
6. console.info("path fillType = ", path.getFillType());
```