canvas
canvas介绍
- canvas是什么
- canvas是一个html5的标签,可以使用JavaScript在其中绘制图形的 HTML5 元素, canvas 原意画布, 帆布。在 HTML 页面中用于展示绘图效果。所有画图的过程使用js来实现。
- canvas可以做什么
- 绘图(图标,图形的绘制)
- 数据的可视化(重点)
- 动画与游戏
- banner 广告
- 多媒体、虚拟现实、图形编辑等
初体验
- Canvas 的默认大小为300像素×150像素(宽×高,像素的单位是px)。但是,可以使用HTML的高度和宽度属性来自定义Canvas 的尺寸。Canvas是一个画布(图片),不要使用css来设置宽高,否则该画布将会被拉升变形。
模板
|
|
绘制基本形状的api
- 创建画图工具 canvas.getContext(“2d”)
- 移动画笔 context.moveTo(x, y)
- 画一条直线 context.lineTo(x, y)
- 描边 context.stroke();
- 填充 context.fill();
- 设置描边颜色 context.strokeStyle = “red”;
- 设置填充颜色 context.fillStyle = “green”;
- 创建一张新的玻璃纸 context.beginPath();
- 闭合路径context.closePath();
路径
- 路径就是画布上的线条
- 路径是有方向的
- 我们可以这样想象: context在画图时,并不是直接把线画到画布上,而是画在玻璃纸上
- 当执行stroke时,把玻璃纸向画布上做一次印刷,再执行一次stoke会再印刷一次
- 为了避免重复印刷,我们的做法是, 再拿一张新的玻璃纸,在新的玻璃纸上绘制
- 再次执行stroke就会使用新玻璃纸上的图形
- beginPath, 创建一个新玻璃纸的过程, 叫做, 路径就是玻璃纸上的图形元素;
- closePath,会自动将lineTo的最后一个点和最近的moveTo点连接起来,闭合路径。
- stroke()和fill()
- stroke是描边,(素描)
- fill是填充,(上色)
- fill会自动执行一次closePath
- strokeStyle和fillStyle
- strokeStyle,描边颜色
- fillStyle, 填充颜色
非零填充原则
- 路径围成的区域内部,任意一点拉一条射线,找到所有与其相交的路径。顺时针为1, 逆时针为-1. 将所有的相交的路径的值相加。 如果不等于零则对该区域进行填充
矩形绘制的三种方式
- 绘制一个矩形的路径 context.rect(x, y, width, height)
- 需要手动去执行stoke或者是fill()
- 绘制一个描边的矩形 context.strokeRect(x, y, width, height)
- 只能描边,不能填充
- 绘制一个填充颜色的矩形 context.fillRect(x, y, width, height)
- 只能填充,不能描边
|
|
绘制圆形或圆弧
- 绘制一个圆形 context.arc(x, y, radius, startRadian, endRadian, direction)
- js中使用的是弧度制。一个完整的圆的弧度是 2*Math.PI
- 角度转弧度的公式 angle/180 * Math.PI
- 绘制扇形, 需要lineTo到圆心,再closePath
- direction默认是false(是否逆时针), 可以不传
|
|
飞镖盘(例子)
|
|
折线图
|
|
柱状图
|
|
饼状图
|
|