1e41f4b71Sopenharmony_ci# Path2D
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci>  **NOTE**
4e41f4b71Sopenharmony_ci>
5e41f4b71Sopenharmony_ci>  This component is supported since API version 6. Updates will be marked with a superscript to indicate their earliest API version.
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci**Path2D** allows you to describe a path through an existing path. This path can be drawn through the **stroke** API of **Canvas**.
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci## addPath
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ciaddPath(path: Object): void
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ciAdds a path to this path.
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci**Parameters**
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| Name  | Type    | Description            |
19e41f4b71Sopenharmony_ci| ---- | ------ | -------------- |
20e41f4b71Sopenharmony_ci| path | Object | Path to be added to this path.|
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci**Example**
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci  ```html
25e41f4b71Sopenharmony_ci<!-- xxx.hml -->
26e41f4b71Sopenharmony_ci<div>
27e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas>
28e41f4b71Sopenharmony_ci</div>
29e41f4b71Sopenharmony_ci  ```
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci  ```js
32e41f4b71Sopenharmony_ci// xxx.js
33e41f4b71Sopenharmony_ciexport default {
34e41f4b71Sopenharmony_ci    onShow() {
35e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
36e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
37e41f4b71Sopenharmony_ci        var path1 = ctx.createPath2D("M250 150 L150 350 L350 350 Z");
38e41f4b71Sopenharmony_ci        var path2 = ctx.createPath2D();
39e41f4b71Sopenharmony_ci        path2.addPath(path1);
40e41f4b71Sopenharmony_ci        ctx.stroke(path2);
41e41f4b71Sopenharmony_ci    }
42e41f4b71Sopenharmony_ci}
43e41f4b71Sopenharmony_ci  ```
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci  ![en-us_image_0000001173164873](figures/en-us_image_0000001173164873.png)
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci## setTransform
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_cisetTransform(scaleX: number, skewX: number, skewY: number, scaleY: number, translateX: number, translateY: number): void
50e41f4b71Sopenharmony_ci
51e41f4b71Sopenharmony_ciSets the path transformation matrix.
52e41f4b71Sopenharmony_ci
53e41f4b71Sopenharmony_ci**Parameters**
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci| Name        | Type    | Description     |
56e41f4b71Sopenharmony_ci| ---------- | ------ | ------- |
57e41f4b71Sopenharmony_ci| scaleX     | number | Scale ratio of the x-axis.|
58e41f4b71Sopenharmony_ci| skewX      | number | Skew angle of the x-axis.|
59e41f4b71Sopenharmony_ci| skewY      | number | Skew angle of the y-axis.|
60e41f4b71Sopenharmony_ci| scaleY     | number | Scale ratio of the y-axis.|
61e41f4b71Sopenharmony_ci| translateX | number | Translation distance along the x-axis.|
62e41f4b71Sopenharmony_ci| translateY | number | Translation distance along the y-axis.|
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_ci**Example** 
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci  ```html
67e41f4b71Sopenharmony_ci<!-- xxx.hml -->
68e41f4b71Sopenharmony_ci<div>
69e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
70e41f4b71Sopenharmony_ci</div>
71e41f4b71Sopenharmony_ci  ```
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci  ```js
74e41f4b71Sopenharmony_ci// xxx.js
75e41f4b71Sopenharmony_ciexport default {
76e41f4b71Sopenharmony_ci    onShow() {
77e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
78e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
79e41f4b71Sopenharmony_ci        var path = ctx.createPath2D("M250 150 L150 350 L350 350 Z");
80e41f4b71Sopenharmony_ci        path.setTransform(0.8, 0, 0, 0.4, 0, 0);
81e41f4b71Sopenharmony_ci        ctx.stroke(path);
82e41f4b71Sopenharmony_ci    }
83e41f4b71Sopenharmony_ci}
84e41f4b71Sopenharmony_ci  ```
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci  ![en-us_image_0000001127125208](figures/en-us_image_0000001127125208.png)
87e41f4b71Sopenharmony_ci
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci## closePath
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ciclosePath(): void
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ciMoves the current point of the path back to the start point of the path, and draws a straight line between the current point and the start point. If the shape has already been closed or has only one point, this method does nothing.
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci**Example** 
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci  ```html
98e41f4b71Sopenharmony_ci<!-- xxx.hml -->
99e41f4b71Sopenharmony_ci<div>
100e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 500px; height: 500px; background-color: #ffff00;"></canvas>
101e41f4b71Sopenharmony_ci</div>
102e41f4b71Sopenharmony_ci  ```
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci  ```js
105e41f4b71Sopenharmony_ci// xxx.js
106e41f4b71Sopenharmony_ciexport default {
107e41f4b71Sopenharmony_ci    onShow() {
108e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
109e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
110e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
111e41f4b71Sopenharmony_ci        path.moveTo(200, 100);
112e41f4b71Sopenharmony_ci        path.lineTo(300, 100);
113e41f4b71Sopenharmony_ci        path.lineTo(200, 200);
114e41f4b71Sopenharmony_ci        path.closePath();
115e41f4b71Sopenharmony_ci        ctx.stroke(path);
116e41f4b71Sopenharmony_ci    }
117e41f4b71Sopenharmony_ci}
118e41f4b71Sopenharmony_ci  ```
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci  ![en-us_image_0000001127125202](figures/en-us_image_0000001127125202.png)
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci
123e41f4b71Sopenharmony_ci## moveTo
124e41f4b71Sopenharmony_ci
125e41f4b71Sopenharmony_cimoveTo(x: number, y: number): void
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ciMoves the current coordinate point of the path to the target point, without drawing a line during the movement.
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci**Parameters**
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci| Parameter  | Type    | Description     |
132e41f4b71Sopenharmony_ci| ---- | ------ | ------- |
133e41f4b71Sopenharmony_ci| x    | number | X-coordinate of the target point.|
134e41f4b71Sopenharmony_ci| y    | number | Y-coordinate of the target point.|
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci**Example** 
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci  ```html
139e41f4b71Sopenharmony_ci<!-- xxx.hml -->
140e41f4b71Sopenharmony_ci<div>
141e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
142e41f4b71Sopenharmony_ci</div>
143e41f4b71Sopenharmony_ci  ```
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci  ```js
146e41f4b71Sopenharmony_ci// xxx.js
147e41f4b71Sopenharmony_ciexport default {
148e41f4b71Sopenharmony_ci    onShow() {
149e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
150e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
151e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
152e41f4b71Sopenharmony_ci        path.moveTo(50, 100);
153e41f4b71Sopenharmony_ci        path.lineTo(250, 100);
154e41f4b71Sopenharmony_ci        path.lineTo(150, 200);
155e41f4b71Sopenharmony_ci        path.closePath();
156e41f4b71Sopenharmony_ci        ctx.stroke(path);
157e41f4b71Sopenharmony_ci    }
158e41f4b71Sopenharmony_ci}
159e41f4b71Sopenharmony_ci  ```
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci  ![en-us_image_0000001173164869](figures/en-us_image_0000001173164869.png)
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci
164e41f4b71Sopenharmony_ci## lineTo
165e41f4b71Sopenharmony_ci
166e41f4b71Sopenharmony_cilineTo(x: number, y: number): void
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ciDraws a straight line from the current point to the target point.
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci**Parameters**
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci| Name  | Type    | Description     |
173e41f4b71Sopenharmony_ci| ---- | ------ | ------- |
174e41f4b71Sopenharmony_ci| x    | number | X-coordinate of the target point.|
175e41f4b71Sopenharmony_ci| y    | number | Y-coordinate of the target point.|
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci**Example**
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci  ```html
180e41f4b71Sopenharmony_ci<!-- xxx.hml -->
181e41f4b71Sopenharmony_ci<div>
182e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 400px; height: 450px; background-color: #ffff00;"></canvas>
183e41f4b71Sopenharmony_ci</div>
184e41f4b71Sopenharmony_ci  ```
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci  ```js
187e41f4b71Sopenharmony_ci// xxx.js
188e41f4b71Sopenharmony_ciexport default {
189e41f4b71Sopenharmony_ci    onShow() {
190e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
191e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
192e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
193e41f4b71Sopenharmony_ci        path.moveTo(100, 100);
194e41f4b71Sopenharmony_ci        path.lineTo(100, 200);
195e41f4b71Sopenharmony_ci        path.lineTo(200, 200);
196e41f4b71Sopenharmony_ci        path.lineTo(200, 100);
197e41f4b71Sopenharmony_ci        path.closePath();
198e41f4b71Sopenharmony_ci        ctx.stroke(path);
199e41f4b71Sopenharmony_ci    }
200e41f4b71Sopenharmony_ci}
201e41f4b71Sopenharmony_ci  ```
202e41f4b71Sopenharmony_ci
203e41f4b71Sopenharmony_ci  ![en-us_image_0000001127285024](figures/en-us_image_0000001127285024.png)
204e41f4b71Sopenharmony_ci
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci## bezierCurveTo
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_cibezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ciDraws a cubic bezier curve on the canvas.
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**Parameters**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci| Name  | Type    | Description            |
215e41f4b71Sopenharmony_ci| ---- | ------ | -------------- |
216e41f4b71Sopenharmony_ci| cp1x | number | X-coordinate of the first parameter of the bezier curve.|
217e41f4b71Sopenharmony_ci| cp1y | number | Y-coordinate of the first parameter of the bezier curve.|
218e41f4b71Sopenharmony_ci| cp2x | number | X-coordinate of the second parameter of the bezier curve.|
219e41f4b71Sopenharmony_ci| cp2y | number | Y-coordinate of the second parameter of the bezier curve.|
220e41f4b71Sopenharmony_ci| x    | number | X-coordinate of the end point on the bezier curve.   |
221e41f4b71Sopenharmony_ci| y    | number | Y-coordinate of the end point on the bezier curve.   |
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci**Example** 
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci  ```html
226e41f4b71Sopenharmony_ci<!-- xxx.hml -->
227e41f4b71Sopenharmony_ci<div>
228e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
229e41f4b71Sopenharmony_ci</div>
230e41f4b71Sopenharmony_ci  ```
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci  ```js
233e41f4b71Sopenharmony_ci// xxx.js
234e41f4b71Sopenharmony_ciexport default {
235e41f4b71Sopenharmony_ci    onShow() {
236e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
237e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
238e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
239e41f4b71Sopenharmony_ci        path.moveTo(10, 10);
240e41f4b71Sopenharmony_ci        path.bezierCurveTo(20, 100, 200, 100, 200, 20);
241e41f4b71Sopenharmony_ci        ctx.stroke(path);
242e41f4b71Sopenharmony_ci    }
243e41f4b71Sopenharmony_ci}
244e41f4b71Sopenharmony_ci  ```
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci  ![en-us_image_0000001173324783](figures/en-us_image_0000001173324783.png)
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci## quadraticCurveTo
250e41f4b71Sopenharmony_ci
251e41f4b71Sopenharmony_ciquadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void
252e41f4b71Sopenharmony_ci
253e41f4b71Sopenharmony_ciDraws a quadratic curve on the canvas.
254e41f4b71Sopenharmony_ci
255e41f4b71Sopenharmony_ci**Parameters** 
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci| Name  | Type    | Description         |
258e41f4b71Sopenharmony_ci| ---- | ------ | ----------- |
259e41f4b71Sopenharmony_ci| cpx  | number | X-coordinate of the bezier curve parameter.|
260e41f4b71Sopenharmony_ci| cpy  | number | Y-coordinate of the bezier curve parameter.|
261e41f4b71Sopenharmony_ci| x    | number | X-coordinate of the end point on the bezier curve.|
262e41f4b71Sopenharmony_ci| y    | number | Y-coordinate of the end point on the bezier curve.|
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci**Example**
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci  ```html
267e41f4b71Sopenharmony_ci<!-- xxx.hml -->
268e41f4b71Sopenharmony_ci<div>
269e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
270e41f4b71Sopenharmony_ci</div>
271e41f4b71Sopenharmony_ci  ```
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci  ```js
274e41f4b71Sopenharmony_ci// xxx.js
275e41f4b71Sopenharmony_ciexport default {
276e41f4b71Sopenharmony_ci    onShow() {
277e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
278e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
279e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
280e41f4b71Sopenharmony_ci        path.moveTo(10, 10);
281e41f4b71Sopenharmony_ci        path.quadraticCurveTo(100, 100, 200, 20);
282e41f4b71Sopenharmony_ci        ctx.stroke(path);
283e41f4b71Sopenharmony_ci    }
284e41f4b71Sopenharmony_ci}
285e41f4b71Sopenharmony_ci  ```
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci  ![en-us_image_0000001173164871](figures/en-us_image_0000001173164871.png)
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci
290e41f4b71Sopenharmony_ci## arc
291e41f4b71Sopenharmony_ci
292e41f4b71Sopenharmony_ciarc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise: number): void
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ciDraws an arc on the canvas.
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci**Parameters** 
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci| Name           | Type     | Description        |
299e41f4b71Sopenharmony_ci| ------------- | ------- | ---------- |
300e41f4b71Sopenharmony_ci| x             | number  | X-coordinate of the center point of the arc.|
301e41f4b71Sopenharmony_ci| y             | number  | Y-coordinate of the center point of the arc.|
302e41f4b71Sopenharmony_ci| radius        | number  | Radius of the arc.   |
303e41f4b71Sopenharmony_ci| startAngle    | number  | Start radian of the arc.  |
304e41f4b71Sopenharmony_ci| endAngle      | number  | End radian of the arc.  |
305e41f4b71Sopenharmony_ci| anticlockwise | boolean | Whether to draw the arc counterclockwise.|
306e41f4b71Sopenharmony_ci
307e41f4b71Sopenharmony_ci**Example** 
308e41f4b71Sopenharmony_ci
309e41f4b71Sopenharmony_ci  ```html
310e41f4b71Sopenharmony_ci<!-- xxx.hml -->
311e41f4b71Sopenharmony_ci<div>
312e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
313e41f4b71Sopenharmony_ci</div>
314e41f4b71Sopenharmony_ci  ```
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci  ```js
317e41f4b71Sopenharmony_ci// xxx.js
318e41f4b71Sopenharmony_ciexport default {
319e41f4b71Sopenharmony_ci    onShow() {
320e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
321e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
322e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
323e41f4b71Sopenharmony_ci        path.arc(100, 75, 50, 0, 6.28);
324e41f4b71Sopenharmony_ci        ctx.stroke(path);
325e41f4b71Sopenharmony_ci    }
326e41f4b71Sopenharmony_ci}
327e41f4b71Sopenharmony_ci  ```
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci  ![en-us_image_0000001173164867](figures/en-us_image_0000001173164867.png)
330e41f4b71Sopenharmony_ci
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci## arcTo
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ciarcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ciDraws an arc based on the radius and points on the arc.
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci**Parameters**
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci| Parameter    | Type    | Description             |
341e41f4b71Sopenharmony_ci| ------ | ------ | --------------- |
342e41f4b71Sopenharmony_ci| x1     | number | X-coordinate of the first point on the arc.|
343e41f4b71Sopenharmony_ci| y1     | number | Y-coordinate of the first point on the arc.|
344e41f4b71Sopenharmony_ci| x2     | number | X-coordinate of the second point on the arc.|
345e41f4b71Sopenharmony_ci| y2     | number | Y-coordinate of the second point on the arc.|
346e41f4b71Sopenharmony_ci| radius | number | Radius of the arc.       |
347e41f4b71Sopenharmony_ci
348e41f4b71Sopenharmony_ci**Example** 
349e41f4b71Sopenharmony_ci
350e41f4b71Sopenharmony_ci  ```html
351e41f4b71Sopenharmony_ci<!-- xxx.hml -->
352e41f4b71Sopenharmony_ci<div>
353e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 300px; height: 250px; background-color: #ffff00;"></canvas>
354e41f4b71Sopenharmony_ci</div>
355e41f4b71Sopenharmony_ci  ```
356e41f4b71Sopenharmony_ci
357e41f4b71Sopenharmony_ci  ```js
358e41f4b71Sopenharmony_ci// xxx.js
359e41f4b71Sopenharmony_ciexport default {
360e41f4b71Sopenharmony_ci    onShow() {
361e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
362e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
363e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
364e41f4b71Sopenharmony_ci        path.arcTo(150, 20, 150, 70, 50);
365e41f4b71Sopenharmony_ci        ctx.stroke(path);
366e41f4b71Sopenharmony_ci    }
367e41f4b71Sopenharmony_ci}
368e41f4b71Sopenharmony_ci  ```
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci  ![en-us_image_0000001127125204](figures/en-us_image_0000001127125204.png)
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci
373e41f4b71Sopenharmony_ci## ellipse
374e41f4b71Sopenharmony_ci
375e41f4b71Sopenharmony_ciellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise: number): void
376e41f4b71Sopenharmony_ci
377e41f4b71Sopenharmony_ciDraws an ellipse in the specified rectangular region on the canvas.
378e41f4b71Sopenharmony_ci
379e41f4b71Sopenharmony_ci**Parameters**
380e41f4b71Sopenharmony_ci
381e41f4b71Sopenharmony_ci| Name           | Type    | Description                                  |
382e41f4b71Sopenharmony_ci| ------------- | ------ | ------------------------------------ |
383e41f4b71Sopenharmony_ci| x             | number | X-coordinate of the ellipse center.                          |
384e41f4b71Sopenharmony_ci| y             | number | Y-coordinate of the ellipse center.                          |
385e41f4b71Sopenharmony_ci| radiusX       | number | Ellipse radius on the x-axis.                          |
386e41f4b71Sopenharmony_ci| radiusY       | number | Ellipse radius on the y-axis.                          |
387e41f4b71Sopenharmony_ci| rotation      | number | Rotation angle of the ellipse, in radians.                      |
388e41f4b71Sopenharmony_ci| startAngle    | number | Angle of the start point for drawing the ellipse, in radians.                   |
389e41f4b71Sopenharmony_ci| endAngle      | number | Angle of the end point for drawing the ellipse, in radians.                   |
390e41f4b71Sopenharmony_ci| anticlockwise | number | Whether to draw the ellipse counterclockwise. The value **0** means clockwise, and **1** means counterclockwise. This parameter is optional. The default value is **0**.|
391e41f4b71Sopenharmony_ci
392e41f4b71Sopenharmony_ci**Example** 
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci  ```html
395e41f4b71Sopenharmony_ci<!-- xxx.hml -->
396e41f4b71Sopenharmony_ci<div>
397e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 500px; height: 450px; background-color: #ffff00;"></canvas>
398e41f4b71Sopenharmony_ci</div>
399e41f4b71Sopenharmony_ci  ```
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci  ```js
402e41f4b71Sopenharmony_ci// xxx.js
403e41f4b71Sopenharmony_ciexport default {
404e41f4b71Sopenharmony_ci    onShow() {
405e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
406e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
407e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
408e41f4b71Sopenharmony_ci        path.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI, 1);
409e41f4b71Sopenharmony_ci        ctx.stroke(path);
410e41f4b71Sopenharmony_ci    }
411e41f4b71Sopenharmony_ci}
412e41f4b71Sopenharmony_ci  ```
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci  ![en-us_image_0000001173324787](figures/en-us_image_0000001173324787.png)
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci
417e41f4b71Sopenharmony_ci## rect
418e41f4b71Sopenharmony_ci
419e41f4b71Sopenharmony_cirect(x: number, y: number, width: number, height: number): void
420e41f4b71Sopenharmony_ci
421e41f4b71Sopenharmony_ciCreates a rectangle on the canvas.
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ci**Parameters**
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_ci| Name    | Type    | Description           |
426e41f4b71Sopenharmony_ci| ------ | ------ | ------------- |
427e41f4b71Sopenharmony_ci| x      | number | X-coordinate of the upper left corner of the rectangle.|
428e41f4b71Sopenharmony_ci| y      | number | Y-coordinate of the upper left corner of the rectangle.|
429e41f4b71Sopenharmony_ci| width  | number | Width of the rectangle.     |
430e41f4b71Sopenharmony_ci| height | number | Height of the rectangle.     |
431e41f4b71Sopenharmony_ci
432e41f4b71Sopenharmony_ci**Example** 
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ci  ```html
435e41f4b71Sopenharmony_ci<!-- xxx.hml -->
436e41f4b71Sopenharmony_ci<div>
437e41f4b71Sopenharmony_ci    <canvas ref="canvas" style="width: 500px; height: 450px; background-color: #ffff00;"></canvas>
438e41f4b71Sopenharmony_ci</div>
439e41f4b71Sopenharmony_ci  ```
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci  ```js
442e41f4b71Sopenharmony_ci// xxx.js
443e41f4b71Sopenharmony_ciexport default {
444e41f4b71Sopenharmony_ci    onShow() {
445e41f4b71Sopenharmony_ci        const el = this.$refs.canvas;
446e41f4b71Sopenharmony_ci        const ctx = el.getContext('2d');
447e41f4b71Sopenharmony_ci        var path = ctx.createPath2D();
448e41f4b71Sopenharmony_ci        path.rect(20, 20, 100, 100);
449e41f4b71Sopenharmony_ci        ctx.stroke(path);
450e41f4b71Sopenharmony_ci    }
451e41f4b71Sopenharmony_ci}
452e41f4b71Sopenharmony_ci  ```
453e41f4b71Sopenharmony_ci
454e41f4b71Sopenharmony_ci  ![en-us_image_0000001127125212](figures/en-us_image_0000001127125212.png)
455