1e41f4b71Sopenharmony_ci# <canvas> Development 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe **<canvas>** component provides a canvas for drawing customized graphics. For details, see [canvas](../reference/apis-arkui/arkui-js/js-components-canvas-canvas.md). 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci## Creating a <canvas> Component 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ciCreate a **<canvas>** component in the .hml file under **pages/index**. 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci``` 13e41f4b71Sopenharmony_ci<!-- xxx.hml --> 14e41f4b71Sopenharmony_ci<div class="container"> 15e41f4b71Sopenharmony_ci <canvas></canvas> 16e41f4b71Sopenharmony_ci</div> 17e41f4b71Sopenharmony_ci``` 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci```css 21e41f4b71Sopenharmony_ci/* xxx.css */ 22e41f4b71Sopenharmony_ci.container{ 23e41f4b71Sopenharmony_ci width: 100%; 24e41f4b71Sopenharmony_ci height: 100%; 25e41f4b71Sopenharmony_ci flex-direction: column; 26e41f4b71Sopenharmony_ci justify-content: center; 27e41f4b71Sopenharmony_ci align-items: center; 28e41f4b71Sopenharmony_ci background-color: #F1F3F5; 29e41f4b71Sopenharmony_ci} 30e41f4b71Sopenharmony_cicanvas{ 31e41f4b71Sopenharmony_ci background-color: #00ff73; 32e41f4b71Sopenharmony_ci} 33e41f4b71Sopenharmony_ci``` 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci> **NOTE** 38e41f4b71Sopenharmony_ci> 39e41f4b71Sopenharmony_ci> - The default background color of the **<canvas>** component is the same as that of the parent component. 40e41f4b71Sopenharmony_ci> 41e41f4b71Sopenharmony_ci> - The default width and height of **<canvas>** are 300 px and 150 px, respectively. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci## Adding Styles 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ciSet **width**, **height**, **background-color**, and **border** of the **<canvas>** component. 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci```html 50e41f4b71Sopenharmony_ci<!-- xxx.hml --> 51e41f4b71Sopenharmony_ci<div class="container"> 52e41f4b71Sopenharmony_ci <canvas></canvas> 53e41f4b71Sopenharmony_ci</div> 54e41f4b71Sopenharmony_ci``` 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci```css 58e41f4b71Sopenharmony_ci/* xxx.css */ 59e41f4b71Sopenharmony_ci.container{ 60e41f4b71Sopenharmony_ci flex-direction: column; 61e41f4b71Sopenharmony_ci justify-content: center; 62e41f4b71Sopenharmony_ci align-items: center; 63e41f4b71Sopenharmony_ci background-color: #F1F3F5; 64e41f4b71Sopenharmony_ci width: 100%; 65e41f4b71Sopenharmony_ci height: 100%; 66e41f4b71Sopenharmony_ci} 67e41f4b71Sopenharmony_cicanvas{ 68e41f4b71Sopenharmony_ci width: 500px; 69e41f4b71Sopenharmony_ci height: 500px; 70e41f4b71Sopenharmony_ci background-color: #fdfdfd; 71e41f4b71Sopenharmony_ci border: 5px solid red; 72e41f4b71Sopenharmony_ci} 73e41f4b71Sopenharmony_ci``` 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci## Adding Events 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ciAdd the long press event to the **<canvas>** component. When the event is triggered, the value of **dataUrl** (image information returned by the **toDataURL** method) of the **<canvas>** component can be obtained and printed in the text area below. 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci 83e41f4b71Sopenharmony_ci```html 84e41f4b71Sopenharmony_ci<!-- xxx.hml --> 85e41f4b71Sopenharmony_ci<div class="container"> 86e41f4b71Sopenharmony_ci <canvas ref="canvas1" onlongpress="getUrl"></canvas> 87e41f4b71Sopenharmony_ci <text>dataURL</text> 88e41f4b71Sopenharmony_ci <text class="content">{{dataURL}}</text> 89e41f4b71Sopenharmony_ci</div> 90e41f4b71Sopenharmony_ci``` 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci 93e41f4b71Sopenharmony_ci```css 94e41f4b71Sopenharmony_ci/* xxx.css */ 95e41f4b71Sopenharmony_ci.container{ 96e41f4b71Sopenharmony_ci width:100%; 97e41f4b71Sopenharmony_ci height:100%; 98e41f4b71Sopenharmony_ci flex-direction: column; 99e41f4b71Sopenharmony_ci justify-content: center; 100e41f4b71Sopenharmony_ci align-items: center; 101e41f4b71Sopenharmony_ci background-color: #F1F3F5; 102e41f4b71Sopenharmony_ci } 103e41f4b71Sopenharmony_ci canvas{ 104e41f4b71Sopenharmony_ci width: 500px; 105e41f4b71Sopenharmony_ci height: 500px; 106e41f4b71Sopenharmony_ci background-color: #fdfdfd; 107e41f4b71Sopenharmony_ci border: 5px solid red; 108e41f4b71Sopenharmony_ci margin-bottom: 50px; 109e41f4b71Sopenharmony_ci} 110e41f4b71Sopenharmony_ci.content{ 111e41f4b71Sopenharmony_ci border: 5px solid blue; 112e41f4b71Sopenharmony_ci padding: 10px; 113e41f4b71Sopenharmony_ci width: 90%; 114e41f4b71Sopenharmony_ci height: 400px; 115e41f4b71Sopenharmony_ci overflow: scroll; 116e41f4b71Sopenharmony_ci} 117e41f4b71Sopenharmony_ci``` 118e41f4b71Sopenharmony_ci 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci```js 121e41f4b71Sopenharmony_ci// xxx.js 122e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 123e41f4b71Sopenharmony_ciexport default { 124e41f4b71Sopenharmony_ci data:{ 125e41f4b71Sopenharmony_ci dataURL:null, 126e41f4b71Sopenharmony_ci }, 127e41f4b71Sopenharmony_ci onShow(){ 128e41f4b71Sopenharmony_ci let el = this.$refs.canvas1; 129e41f4b71Sopenharmony_ci let ctx = el.getContext("2d"); 130e41f4b71Sopenharmony_ci ctx.strokeRect(100,100,300,300); 131e41f4b71Sopenharmony_ci }, 132e41f4b71Sopenharmony_ci getUrl(){ 133e41f4b71Sopenharmony_ci let el = this.$refs.canvas1 134e41f4b71Sopenharmony_ci let dataUrl = el.toDataURL() 135e41f4b71Sopenharmony_ci this.dataURL = dataUrl; 136e41f4b71Sopenharmony_ci promptAction.showToast({duration:2000,message:"long press,get dataURL"}) 137e41f4b71Sopenharmony_ci } 138e41f4b71Sopenharmony_ci} 139e41f4b71Sopenharmony_ci``` 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci> **NOTE** 144e41f4b71Sopenharmony_ci> 145e41f4b71Sopenharmony_ci> The **<canvas>** component cannot be created in **onInit** or **onReady**. 146