1e41f4b71Sopenharmony_ci# Path2D 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci路径对象,支持通过对象的接口进行路径的描述,并通过Canvas的stroke接口或者fill接口进行绘制。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 接口 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ciPath2D(unit?: LengthMetricsUnit) 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci构造一个空的Path2D对象。 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**参数:** 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 24e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 25e41f4b71Sopenharmony_ci| unit<sup>12+</sup> | [LengthMetricsUnit](../js-apis-arkui-graphics.md#lengthmetricsunit12) | 否 | 用来配置Path2D对象的单位模式,配置后无法动态更改,配置方法同[CanvasRenderingContext2D](ts-canvasrenderingcontext2d.md#lengthmetricsunit12)。<br>默认值:DEFAULT。| 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ciPath2D(description: string, unit?: LengthMetricsUnit) 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci使用符合SVG路径描述规范的路径字符串构造一个Path2D对象。 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci**参数:** 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 40e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 41e41f4b71Sopenharmony_ci| description | string | 是 | 符合 SVG 路径描述规范的路径字符串 | 42e41f4b71Sopenharmony_ci| unit<sup>12+</sup> | [LengthMetricsUnit](../js-apis-arkui-graphics.md#lengthmetricsunit12) | 否 | 用来配置Path2D对象的单位模式,配置后无法动态更改,配置方法同[CanvasRenderingContext2D](ts-canvasrenderingcontext2d.md#lengthmetricsunit12)。<br>默认值:DEFAULT。| 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci## addPath 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ciaddPath(path: Path2D, transform?: Matrix2D): void 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci将另一个路径添加到当前的路径对象中。 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci**参数:** 57e41f4b71Sopenharmony_ci 58e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 59e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 60e41f4b71Sopenharmony_ci| path | [Path2D](ts-components-canvas-path2d.md) | 是 | 需要添加到当前路径的路径对象,路径单位:px。 | 61e41f4b71Sopenharmony_ci| transform | [Matrix2D](ts-components-canvas-matrix2d.md) | 否 | 新增路径的变换矩阵对象。<br>默认值:null。 | 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci**示例:** 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci ```ts 67e41f4b71Sopenharmony_ci // xxx.ets 68e41f4b71Sopenharmony_ci @Entry 69e41f4b71Sopenharmony_ci @Component 70e41f4b71Sopenharmony_ci struct AddPath { 71e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 72e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci private path2Da: Path2D = new Path2D("M250 150 L150 350 L350 350 Z") 75e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci build() { 78e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 79e41f4b71Sopenharmony_ci Canvas(this.context) 80e41f4b71Sopenharmony_ci .width('100%') 81e41f4b71Sopenharmony_ci .height('100%') 82e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 83e41f4b71Sopenharmony_ci .onReady(() =>{ 84e41f4b71Sopenharmony_ci this.path2Db.addPath(this.path2Da) 85e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 86e41f4b71Sopenharmony_ci }) 87e41f4b71Sopenharmony_ci } 88e41f4b71Sopenharmony_ci .width('100%') 89e41f4b71Sopenharmony_ci .height('100%') 90e41f4b71Sopenharmony_ci } 91e41f4b71Sopenharmony_ci } 92e41f4b71Sopenharmony_ci ``` 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci  95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci 97e41f4b71Sopenharmony_ci## closePath 98e41f4b71Sopenharmony_ci 99e41f4b71Sopenharmony_ciclosePath(): void 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci将路径的当前点移回到路径的起点,当前点到起点间画一条直线。如果形状已经闭合或只有一个点,则此功能不执行任何操作。 102e41f4b71Sopenharmony_ci 103e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 104e41f4b71Sopenharmony_ci 105e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 108e41f4b71Sopenharmony_ci 109e41f4b71Sopenharmony_ci**示例:** 110e41f4b71Sopenharmony_ci 111e41f4b71Sopenharmony_ci ```ts 112e41f4b71Sopenharmony_ci // xxx.ets 113e41f4b71Sopenharmony_ci @Entry 114e41f4b71Sopenharmony_ci @Component 115e41f4b71Sopenharmony_ci struct ClosePath { 116e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 117e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 118e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci build() { 121e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 122e41f4b71Sopenharmony_ci Canvas(this.context) 123e41f4b71Sopenharmony_ci .width('100%') 124e41f4b71Sopenharmony_ci .height('100%') 125e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 126e41f4b71Sopenharmony_ci .onReady(() =>{ 127e41f4b71Sopenharmony_ci this.path2Db.moveTo(200, 100) 128e41f4b71Sopenharmony_ci this.path2Db.lineTo(300, 100) 129e41f4b71Sopenharmony_ci this.path2Db.lineTo(200, 200) 130e41f4b71Sopenharmony_ci this.path2Db.closePath() 131e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 132e41f4b71Sopenharmony_ci }) 133e41f4b71Sopenharmony_ci } 134e41f4b71Sopenharmony_ci .width('100%') 135e41f4b71Sopenharmony_ci .height('100%') 136e41f4b71Sopenharmony_ci } 137e41f4b71Sopenharmony_ci } 138e41f4b71Sopenharmony_ci ``` 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ci  141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci## moveTo 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_cimoveTo(x: number, y: number): void 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci将路径的当前坐标点移动到目标点,移动过程中不绘制线条。 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 152e41f4b71Sopenharmony_ci 153e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 154e41f4b71Sopenharmony_ci 155e41f4b71Sopenharmony_ci**参数:** 156e41f4b71Sopenharmony_ci 157e41f4b71Sopenharmony_ci| 参数 | 类型 | 必填 | 描述 | 158e41f4b71Sopenharmony_ci| ---- | ------ | ---- | -------- | 159e41f4b71Sopenharmony_ci| x | number | 是 | 目标点X轴坐标。<br>默认单位:vp。 | 160e41f4b71Sopenharmony_ci| y | number | 是 | 目标点Y轴坐标。<br>默认单位:vp。 | 161e41f4b71Sopenharmony_ci 162e41f4b71Sopenharmony_ci**示例:** 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci ```ts 165e41f4b71Sopenharmony_ci // xxx.ets 166e41f4b71Sopenharmony_ci @Entry 167e41f4b71Sopenharmony_ci @Component 168e41f4b71Sopenharmony_ci struct MoveTo { 169e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 170e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 171e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci build() { 174e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 175e41f4b71Sopenharmony_ci Canvas(this.context) 176e41f4b71Sopenharmony_ci .width('100%') 177e41f4b71Sopenharmony_ci .height('100%') 178e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 179e41f4b71Sopenharmony_ci .onReady(() =>{ 180e41f4b71Sopenharmony_ci this.path2Db.moveTo(50, 100) 181e41f4b71Sopenharmony_ci this.path2Db.lineTo(250, 100) 182e41f4b71Sopenharmony_ci this.path2Db.lineTo(150, 200) 183e41f4b71Sopenharmony_ci this.path2Db.closePath() 184e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 185e41f4b71Sopenharmony_ci }) 186e41f4b71Sopenharmony_ci } 187e41f4b71Sopenharmony_ci .width('100%') 188e41f4b71Sopenharmony_ci .height('100%') 189e41f4b71Sopenharmony_ci } 190e41f4b71Sopenharmony_ci } 191e41f4b71Sopenharmony_ci ``` 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci  194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci## lineTo 197e41f4b71Sopenharmony_ci 198e41f4b71Sopenharmony_cilineTo(x: number, y: number): void 199e41f4b71Sopenharmony_ci 200e41f4b71Sopenharmony_ci从当前点绘制一条直线到目标点。 201e41f4b71Sopenharmony_ci 202e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 205e41f4b71Sopenharmony_ci 206e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 207e41f4b71Sopenharmony_ci 208e41f4b71Sopenharmony_ci**参数:** 209e41f4b71Sopenharmony_ci 210e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 211e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 212e41f4b71Sopenharmony_ci| x | number | 是 | 目标点X轴坐标。<br>默认单位:vp。 | 213e41f4b71Sopenharmony_ci| y | number | 是 | 目标点Y轴坐标。<br>默认单位:vp。 | 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ci**示例:** 216e41f4b71Sopenharmony_ci 217e41f4b71Sopenharmony_ci ```ts 218e41f4b71Sopenharmony_ci // xxx.ets 219e41f4b71Sopenharmony_ci @Entry 220e41f4b71Sopenharmony_ci @Component 221e41f4b71Sopenharmony_ci struct LineTo { 222e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 223e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 224e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 225e41f4b71Sopenharmony_ci 226e41f4b71Sopenharmony_ci build() { 227e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 228e41f4b71Sopenharmony_ci Canvas(this.context) 229e41f4b71Sopenharmony_ci .width('100%') 230e41f4b71Sopenharmony_ci .height('100%') 231e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 232e41f4b71Sopenharmony_ci .onReady(() =>{ 233e41f4b71Sopenharmony_ci this.path2Db.moveTo(100, 100) 234e41f4b71Sopenharmony_ci this.path2Db.lineTo(100, 200) 235e41f4b71Sopenharmony_ci this.path2Db.lineTo(200, 200) 236e41f4b71Sopenharmony_ci this.path2Db.lineTo(200, 100) 237e41f4b71Sopenharmony_ci this.path2Db.closePath() 238e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 239e41f4b71Sopenharmony_ci }) 240e41f4b71Sopenharmony_ci } 241e41f4b71Sopenharmony_ci .width('100%') 242e41f4b71Sopenharmony_ci .height('100%') 243e41f4b71Sopenharmony_ci } 244e41f4b71Sopenharmony_ci } 245e41f4b71Sopenharmony_ci ``` 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci  248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci## bezierCurveTo 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_cibezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci创建三次贝赛尔曲线的路径。 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 257e41f4b71Sopenharmony_ci 258e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 259e41f4b71Sopenharmony_ci 260e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 261e41f4b71Sopenharmony_ci 262e41f4b71Sopenharmony_ci**参数:** 263e41f4b71Sopenharmony_ci 264e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 265e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 266e41f4b71Sopenharmony_ci| cp1x | number | 是 | 第一个贝塞尔参数的x坐标值。<br>默认单位:vp。 | 267e41f4b71Sopenharmony_ci| cp1y | number | 是 | 第一个贝塞尔参数的y坐标值。<br>默认单位:vp。 | 268e41f4b71Sopenharmony_ci| cp2x | number | 是 | 第二个贝塞尔参数的x坐标值。<br>默认单位:vp。 | 269e41f4b71Sopenharmony_ci| cp2y | number | 是 | 第二个贝塞尔参数的y坐标值。<br>默认单位:vp。 | 270e41f4b71Sopenharmony_ci| x | number | 是 | 路径结束时的x坐标值。<br>默认单位:vp。 | 271e41f4b71Sopenharmony_ci| y | number | 是 | 路径结束时的y坐标值。<br>默认单位:vp。 | 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci**示例:** 274e41f4b71Sopenharmony_ci 275e41f4b71Sopenharmony_ci ```ts 276e41f4b71Sopenharmony_ci // xxx.ets 277e41f4b71Sopenharmony_ci @Entry 278e41f4b71Sopenharmony_ci @Component 279e41f4b71Sopenharmony_ci struct BezierCurveTo { 280e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 281e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 282e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 283e41f4b71Sopenharmony_ci 284e41f4b71Sopenharmony_ci build() { 285e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 286e41f4b71Sopenharmony_ci Canvas(this.context) 287e41f4b71Sopenharmony_ci .width('100%') 288e41f4b71Sopenharmony_ci .height('100%') 289e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 290e41f4b71Sopenharmony_ci .onReady(() =>{ 291e41f4b71Sopenharmony_ci this.path2Db.moveTo(10, 10) 292e41f4b71Sopenharmony_ci this.path2Db.bezierCurveTo(20, 100, 200, 100, 200, 20) 293e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 294e41f4b71Sopenharmony_ci }) 295e41f4b71Sopenharmony_ci } 296e41f4b71Sopenharmony_ci .width('100%') 297e41f4b71Sopenharmony_ci .height('100%') 298e41f4b71Sopenharmony_ci } 299e41f4b71Sopenharmony_ci } 300e41f4b71Sopenharmony_ci ``` 301e41f4b71Sopenharmony_ci 302e41f4b71Sopenharmony_ci  303e41f4b71Sopenharmony_ci 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci## quadraticCurveTo 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ciquadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void 308e41f4b71Sopenharmony_ci 309e41f4b71Sopenharmony_ci创建二次贝赛尔曲线的路径。 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 312e41f4b71Sopenharmony_ci 313e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 314e41f4b71Sopenharmony_ci 315e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 316e41f4b71Sopenharmony_ci 317e41f4b71Sopenharmony_ci**参数:** 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 320e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 321e41f4b71Sopenharmony_ci| cpx | number | 是 | 贝塞尔参数的x坐标值。<br>默认单位:vp。 | 322e41f4b71Sopenharmony_ci| cpy | number | 是 | 贝塞尔参数的y坐标值。<br>默认单位:vp。 | 323e41f4b71Sopenharmony_ci| x | number | 是 | 路径结束时的x坐标值。<br>默认单位:vp。 | 324e41f4b71Sopenharmony_ci| y | number | 是 | 路径结束时的y坐标值。<br>默认单位:vp。 | 325e41f4b71Sopenharmony_ci 326e41f4b71Sopenharmony_ci**示例:** 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci ```ts 329e41f4b71Sopenharmony_ci // xxx.ets 330e41f4b71Sopenharmony_ci @Entry 331e41f4b71Sopenharmony_ci @Component 332e41f4b71Sopenharmony_ci struct QuadraticCurveTo { 333e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 334e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 335e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 336e41f4b71Sopenharmony_ci 337e41f4b71Sopenharmony_ci build() { 338e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 339e41f4b71Sopenharmony_ci Canvas(this.context) 340e41f4b71Sopenharmony_ci .width('100%') 341e41f4b71Sopenharmony_ci .height('100%') 342e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 343e41f4b71Sopenharmony_ci .onReady(() =>{ 344e41f4b71Sopenharmony_ci this.path2Db.moveTo(10, 10) 345e41f4b71Sopenharmony_ci this.path2Db.quadraticCurveTo(100, 100, 200, 20) 346e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 347e41f4b71Sopenharmony_ci }) 348e41f4b71Sopenharmony_ci } 349e41f4b71Sopenharmony_ci .width('100%') 350e41f4b71Sopenharmony_ci .height('100%') 351e41f4b71Sopenharmony_ci } 352e41f4b71Sopenharmony_ci } 353e41f4b71Sopenharmony_ci ``` 354e41f4b71Sopenharmony_ci 355e41f4b71Sopenharmony_ci  356e41f4b71Sopenharmony_ci 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci## arc 359e41f4b71Sopenharmony_ci 360e41f4b71Sopenharmony_ciarc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void 361e41f4b71Sopenharmony_ci 362e41f4b71Sopenharmony_ci绘制弧线路径。 363e41f4b71Sopenharmony_ci 364e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 365e41f4b71Sopenharmony_ci 366e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci**参数:** 371e41f4b71Sopenharmony_ci 372e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 373e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 374e41f4b71Sopenharmony_ci| x | number | 是 | 弧线圆心的x坐标值。<br>默认单位:vp。 | 375e41f4b71Sopenharmony_ci| y | number | 是 | 弧线圆心的y坐标值。<br>默认单位:vp。 | 376e41f4b71Sopenharmony_ci| radius | number | 是 | 弧线的圆半径。<br>默认单位:vp。 | 377e41f4b71Sopenharmony_ci| startAngle | number | 是 | 弧线的起始弧度。<br>单位:弧度。 | 378e41f4b71Sopenharmony_ci| endAngle | number | 是 | 弧线的终止弧度。<br>单位:弧度。 | 379e41f4b71Sopenharmony_ci| counterclockwise | boolean | 否 | 是否逆时针绘制圆弧。<br>true:逆时针方向绘制椭圆。<br>false:顺时针方向绘制椭圆。<br>默认值:false。 | 380e41f4b71Sopenharmony_ci 381e41f4b71Sopenharmony_ci**示例:** 382e41f4b71Sopenharmony_ci 383e41f4b71Sopenharmony_ci ```ts 384e41f4b71Sopenharmony_ci // xxx.ets 385e41f4b71Sopenharmony_ci @Entry 386e41f4b71Sopenharmony_ci @Component 387e41f4b71Sopenharmony_ci struct Arc { 388e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 389e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 390e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 391e41f4b71Sopenharmony_ci 392e41f4b71Sopenharmony_ci build() { 393e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 394e41f4b71Sopenharmony_ci Canvas(this.context) 395e41f4b71Sopenharmony_ci .width('100%') 396e41f4b71Sopenharmony_ci .height('100%') 397e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 398e41f4b71Sopenharmony_ci .onReady(() =>{ 399e41f4b71Sopenharmony_ci this.path2Db.arc(100, 75, 50, 0, 6.28) 400e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 401e41f4b71Sopenharmony_ci }) 402e41f4b71Sopenharmony_ci } 403e41f4b71Sopenharmony_ci .width('100%') 404e41f4b71Sopenharmony_ci .height('100%') 405e41f4b71Sopenharmony_ci } 406e41f4b71Sopenharmony_ci } 407e41f4b71Sopenharmony_ci ``` 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ci  410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ci 412e41f4b71Sopenharmony_ci## arcTo 413e41f4b71Sopenharmony_ci 414e41f4b71Sopenharmony_ciarcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void 415e41f4b71Sopenharmony_ci 416e41f4b71Sopenharmony_ci依据圆弧经过的点和圆弧半径创建圆弧路径。 417e41f4b71Sopenharmony_ci 418e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 419e41f4b71Sopenharmony_ci 420e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 421e41f4b71Sopenharmony_ci 422e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 423e41f4b71Sopenharmony_ci 424e41f4b71Sopenharmony_ci**参数:** 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 427e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 428e41f4b71Sopenharmony_ci| x1 | number | 是 | 圆弧经过的第一个点的x坐标值。<br>默认单位:vp。 | 429e41f4b71Sopenharmony_ci| y1 | number | 是 | 圆弧经过的第一个点的y坐标值。<br>默认单位:vp。 | 430e41f4b71Sopenharmony_ci| x2 | number | 是 | 圆弧经过的第二个点的x坐标值。<br>默认单位:vp。 | 431e41f4b71Sopenharmony_ci| y2 | number | 是 | 圆弧经过的第二个点的y坐标值。<br>默认单位:vp。 | 432e41f4b71Sopenharmony_ci| radius | number | 是 | 圆弧的圆半径值。<br>默认单位:vp。 | 433e41f4b71Sopenharmony_ci 434e41f4b71Sopenharmony_ci**示例:** 435e41f4b71Sopenharmony_ci 436e41f4b71Sopenharmony_ci ```ts 437e41f4b71Sopenharmony_ci // xxx.ets 438e41f4b71Sopenharmony_ci @Entry 439e41f4b71Sopenharmony_ci @Component 440e41f4b71Sopenharmony_ci struct ArcTo { 441e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 442e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 443e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 444e41f4b71Sopenharmony_ci 445e41f4b71Sopenharmony_ci build() { 446e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 447e41f4b71Sopenharmony_ci Canvas(this.context) 448e41f4b71Sopenharmony_ci .width('100%') 449e41f4b71Sopenharmony_ci .height('100%') 450e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 451e41f4b71Sopenharmony_ci .onReady(() =>{ 452e41f4b71Sopenharmony_ci this.path2Db.arcTo(150, 20, 150, 70, 50) 453e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 454e41f4b71Sopenharmony_ci }) 455e41f4b71Sopenharmony_ci } 456e41f4b71Sopenharmony_ci .width('100%') 457e41f4b71Sopenharmony_ci .height('100%') 458e41f4b71Sopenharmony_ci } 459e41f4b71Sopenharmony_ci } 460e41f4b71Sopenharmony_ci ``` 461e41f4b71Sopenharmony_ci 462e41f4b71Sopenharmony_ci  463e41f4b71Sopenharmony_ci 464e41f4b71Sopenharmony_ci 465e41f4b71Sopenharmony_ci## ellipse 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ciellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_ci在规定的矩形区域绘制一个椭圆。 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci**参数:** 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 480e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 481e41f4b71Sopenharmony_ci| x | number | 是 | 椭圆圆心的x轴坐标。<br>默认单位:vp。| 482e41f4b71Sopenharmony_ci| y | number | 是 | 椭圆圆心的y轴坐标。<br>默认单位:vp。| 483e41f4b71Sopenharmony_ci| radiusX | number | 是 | 椭圆x轴的半径长度。<br>默认单位:vp。| 484e41f4b71Sopenharmony_ci| radiusY | number | 是 | 椭圆y轴的半径长度。<br>默认单位:vp。| 485e41f4b71Sopenharmony_ci| rotation | number | 是 | 椭圆的旋转角度。<br>单位:弧度。 | 486e41f4b71Sopenharmony_ci| startAngle | number | 是 | 椭圆绘制的起始点角度。<br>单位:弧度。 | 487e41f4b71Sopenharmony_ci| endAngle | number | 是 | 椭圆绘制的结束点角度。<br>单位:弧度。 | 488e41f4b71Sopenharmony_ci| counterclockwise | boolean | 否 | 是否以逆时针方向绘制椭圆。<br>true:逆时针方向绘制椭圆。<br>false:顺时针方向绘制椭圆。<br>默认值:false。 | 489e41f4b71Sopenharmony_ci 490e41f4b71Sopenharmony_ci**示例:** 491e41f4b71Sopenharmony_ci 492e41f4b71Sopenharmony_ci ```ts 493e41f4b71Sopenharmony_ci // xxx.ets 494e41f4b71Sopenharmony_ci @Entry 495e41f4b71Sopenharmony_ci @Component 496e41f4b71Sopenharmony_ci struct CanvasExample { 497e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 498e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 499e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 500e41f4b71Sopenharmony_ci 501e41f4b71Sopenharmony_ci build() { 502e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 503e41f4b71Sopenharmony_ci Canvas(this.context) 504e41f4b71Sopenharmony_ci .width('100%') 505e41f4b71Sopenharmony_ci .height('100%') 506e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 507e41f4b71Sopenharmony_ci .onReady(() =>{ 508e41f4b71Sopenharmony_ci this.path2Db.ellipse(200, 200, 50, 100, 0, Math.PI * 1, Math.PI*2) 509e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 510e41f4b71Sopenharmony_ci }) 511e41f4b71Sopenharmony_ci } 512e41f4b71Sopenharmony_ci .width('100%') 513e41f4b71Sopenharmony_ci .height('100%') 514e41f4b71Sopenharmony_ci } 515e41f4b71Sopenharmony_ci } 516e41f4b71Sopenharmony_ci ``` 517e41f4b71Sopenharmony_ci 518e41f4b71Sopenharmony_ci  519e41f4b71Sopenharmony_ci 520e41f4b71Sopenharmony_ci 521e41f4b71Sopenharmony_ci## rect 522e41f4b71Sopenharmony_ci 523e41f4b71Sopenharmony_cirect(x: number, y: number, w: number, h: number): void 524e41f4b71Sopenharmony_ci 525e41f4b71Sopenharmony_ci创建矩形路径。 526e41f4b71Sopenharmony_ci 527e41f4b71Sopenharmony_ci**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 528e41f4b71Sopenharmony_ci 529e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 530e41f4b71Sopenharmony_ci 531e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.ArkUI.ArkUI.Full 532e41f4b71Sopenharmony_ci 533e41f4b71Sopenharmony_ci**参数:** 534e41f4b71Sopenharmony_ci 535e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 536e41f4b71Sopenharmony_ci| ----- | -------- | ---- | ---------- | 537e41f4b71Sopenharmony_ci| x | number | 是 | 指定矩形的左上角x坐标值。<br>默认单位:vp。 | 538e41f4b71Sopenharmony_ci| y | number | 是 | 指定矩形的左上角y坐标值。<br>默认单位:vp。 | 539e41f4b71Sopenharmony_ci| w | number | 是 | 指定矩形的宽度。<br>默认单位:vp。 | 540e41f4b71Sopenharmony_ci| h | number | 是 | 指定矩形的高度。<br>默认单位:vp。 | 541e41f4b71Sopenharmony_ci 542e41f4b71Sopenharmony_ci**示例:** 543e41f4b71Sopenharmony_ci 544e41f4b71Sopenharmony_ci ```ts 545e41f4b71Sopenharmony_ci // xxx.ets 546e41f4b71Sopenharmony_ci @Entry 547e41f4b71Sopenharmony_ci @Component 548e41f4b71Sopenharmony_ci struct CanvasExample { 549e41f4b71Sopenharmony_ci private settings: RenderingContextSettings = new RenderingContextSettings(true) 550e41f4b71Sopenharmony_ci private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 551e41f4b71Sopenharmony_ci private path2Db: Path2D = new Path2D() 552e41f4b71Sopenharmony_ci 553e41f4b71Sopenharmony_ci build() { 554e41f4b71Sopenharmony_ci Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { 555e41f4b71Sopenharmony_ci Canvas(this.context) 556e41f4b71Sopenharmony_ci .width('100%') 557e41f4b71Sopenharmony_ci .height('100%') 558e41f4b71Sopenharmony_ci .backgroundColor('#ffff00') 559e41f4b71Sopenharmony_ci .onReady(() =>{ 560e41f4b71Sopenharmony_ci this.path2Db.rect(20, 20, 100, 100); 561e41f4b71Sopenharmony_ci this.context.stroke(this.path2Db) 562e41f4b71Sopenharmony_ci }) 563e41f4b71Sopenharmony_ci } 564e41f4b71Sopenharmony_ci .width('100%') 565e41f4b71Sopenharmony_ci .height('100%') 566e41f4b71Sopenharmony_ci } 567e41f4b71Sopenharmony_ci } 568e41f4b71Sopenharmony_ci ``` 569e41f4b71Sopenharmony_ci 570e41f4b71Sopenharmony_ci  571