Canvas是用来干嘛的
canvas(画布)是HTML5中新增一个HTML5标签与操作canvas的javascript API,用于在网页实时生成图像,并且可以操作图像内容,可以实现在网页中完成动态的2D与3D图像技术。SVG以之间的一个重要的不同是,有一个基于 JavaScript 的绘图 API,而 SVG使用一个 XML 文档来描述绘图。SVG 绘图很容易编辑与生成,但功能明显要弱一些。 canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能。
如何使用
一、首先新建一个<canvas>节点
1 | <canvas id="myCanvas" width="400" height="200"> |
复制代码上面代码中,如果浏览器不支持这个API,则就会显示<canvas>标签中间的文字——“您de浏览器不支持canvas!”。
每个canvas节点都有一个对应的context对象(上下文对象),Canvas API定义在这个context对象上面,所以需要获取这个对象,方法是使用getContext方法。
1 | var canvas = document.getElementById('myCanvas'); |
复制代码上面代码中,getContext方法指定参数2d,表示该canvas节点用于生成2D图案(即平面图案)。如果参数是webgl,就表示用于生成3D图像(即立体图案),这部分实际上单独叫做WebGL API。
二、绘图
canvas画布提供了一个用来作图的平面空间,该空间的每个点都有自己的坐标,x表示横坐标,y表示纵坐标。原点(0, 0)位于图像左上角,x轴的正向是原点向右,y轴的正向是原点向下
1.绘制路径
beginPath方法表示开始绘制路径,moveTo(x, y)方法设置线段的起点,lineTo(x, y)方法设置线段的终点,stroke方法用来给透明的线段着色。
1 | ctx.beginPath(); // 开始路径绘制 |
moveto和lineto方法可以多次使用。最后,还可以使用closePath方法,自动绘制一条当前点到起点的直线,形成一个封闭图形,省却使用一次lineto方法。
2.绘制矩形
fillRect实心矩形
fillRect(x, y, width, height)方法用来绘制矩形,它的四个参数分别为矩形左上角顶点的x坐标、y坐标,以及矩形的宽和高。fillStyle属性用来设置矩形的填充色。
1 | ctx.fillStyle = 'yellow'; |
strokeRect空心矩形
1 | ctx.strokeRect(10, 150, 50, 50); |
clearRect清除某个矩形区域的内容
1 | ctx.clearRect(10, 30, 50, 50); |
3.绘制文本
fillText(string, x, y) 用来绘制文本,它的三个参数分别为文本内容、起点的x坐标、y坐标。使用之前,需用font设置字体、大小、样式(写法类似与CSS的font属性)。与此类似的还有strokeText方法,用来添加空心字。
1 | // 设置字体 |
复制代码fillText方法不支持文本断行,即所有文本出现在一行内。所以,如果要生成多行文本,只有调用多次fillText方法。
4.绘制圆形和扇形
arc方法用来绘制扇形,ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
复制代码arc方法的x和y参数是圆心坐标,radius是半径,startAngle和endAngle则是扇形的起始角度和终止角度(以弧度表示),anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)。
绘制实心圆形
1 | ctx.beginPath(); |
绘制空心圆形
1 | ctx.beginPath(); |
demo:
See the Pen
canvas by Iona (@lozoe)
on CodePen.
参考:
https://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial/Basic_usage