1# DrawingRenderingContext
2
3使用DrawingRenderingContext在Canvas组件上进行绘制,绘制对象可以是矩形、文本、图片等。
4
5> **说明:**
6>
7> 从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## 接口
10
11DrawingRenderingContext(unit?: LengthMetricsUnit)
12
13**卡片能力:** 从API version 12开始,该接口支持在ArkTS卡片中使用。
14
15**系统能力:** SystemCapability.ArkUI.ArkUI.Full
16
17**参数:**
18
19| 参数名      | 类型 | 必填   | 说明 |
20| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
21| unit<sup>12+</sup>  | [LengthMetricsUnit](../js-apis-arkui-graphics.md#lengthmetricsunit12) | 否    | 用来配置DrawingRenderingContext对象的单位模式,配置后无法更改,配置方法同[CanvasRenderingContext2D](ts-canvasrenderingcontext2d.md#lengthmetricsunit12)。<br>默认值:DEFAULT。 |
22
23## 属性
24
25**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
26
27**系统能力:** SystemCapability.ArkUI.ArkUI.Full
28
29| 名称       | 类型 | 只读 | 可选 | 说明 |
30| ---------- | ------------ | -------------------- | ---------------------------- | ---------------------------- |
31| size       | [Size](#size)    | 否 | 否 | Context大小的宽和高。<br>默认单位为vp。                                            |
32| canvas     | [Canvas](../../apis-arkgraphics2d/js-apis-graphics-drawing.md#canvas) | 否 | 否 | 绘制模块的Canvas对象,具体描述见绘制模块中的[Canvas](../../apis-arkgraphics2d/js-apis-graphics-drawing.md#canvas)对象。 |
33
34### Size
35
36**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
37
38**系统能力:** SystemCapability.ArkUI.ArkUI.Full
39
40| 名称 | 类型 | 只读 | 可选 | 说明 |
41| ---------- | -------------- | ------ | ---------------- | ------------------------ |
42| width | number | 否 | 否 | DrawingRenderingContext的宽度。 |
43| height | number | 否 | 否 | DrawingRenderingContext的高度。 |
44
45## 方法
46
47### invalidate
48
49invalidate(): void
50
51**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
52
53**系统能力:** SystemCapability.ArkUI.ArkUI.Full
54
55使组件无效,触发组件的重新渲染。
56
57**示例:**
58
59该示例实现了如何使用DrawingRenderingContext中的方法进行绘制。
60
61```ts
62// xxx.ets
63@Entry
64@Component
65struct CanvasExample {
66  private context: DrawingRenderingContext = new DrawingRenderingContext()
67
68  build() {
69    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
70      Canvas(this.context)
71        .width('100%')
72        .height('100%')
73        .backgroundColor('#ffff00')
74        .onReady(() => {
75          this.context.canvas.drawCircle(200, 200, 100)
76          this.context.invalidate()
77        })
78    }
79    .width('100%')
80    .height('100%')
81  }
82}
83```
84  ![zh-cn_image_0000001194032666](figures/canvas_drawingRenderingContext.png)
85