canvas 是 HTML5 提供的一个用于展示绘图效果的标签. canvas 原意画布, 帆布. 在 HTML 页面中用于展示绘图效果. 最早 canvas 是苹果提出的一个方案, 今天已经在大多数浏览器中实现.
canvas 英 ['kænvəs] 美 ['kænvəs] 帆布 画布
默认的宽高为:300 * 150
Canvas 使用注意:
- 设置
canvas
宽高canvas
只是一个画布,不能直接自己绘图,绘图需要使用工具 - 设置
canvas
宽和高的时候不推荐使用css
样式去设置,因为会有拉伸的效果 - 在不支持的浏览器中,
canvas
中的内容会正常的现实出来 - 再
canvas
标签内部书写内容,在支持的浏览器中,该内容会被忽略 - 在不支持的浏览器中会将
canvas
标签会当作div
标签来处理
canvas 的使用领域
canvas
的使用领域很多:
- 游戏
- 可视化数据(重点)
banner
广告- 多媒体
- 未来
- 模拟仿真
- 远程操作
- 图形编辑
Canvas 怎么用?
- 创建一个
Canvas
标签 - 获取到该
DOM
对象 Canvas
只是一个画布,不能自己画画,需要画图工具- 每个
Canvas
对应一个画图工具,通过canvas
对象.getContext("2d")
参数有2d
和webgl
两种2d
获取到一个CanvasRenderingContext2D
类型的对象,使用webgl
返回WebGLRenderingContext
类型的对象.
如何画直线
- 先确定在何处下笔,画图工具
.moveTo(x, y)
- 确定从开始的点画到哪里去, 画图工具
.lineTo(x, y)
- 上面两步之后,线并没有画出来,而是描点,需要最后一步进行画线 画图工具
.stroke();
1 | var canvas = document.createElement( 'canvas' ); |
lineTo的特性
每次 lineTo
之后都会记录最后的 lineTo
的点,下次 lineTo
的时候就接着这个 canvas
只是一个画布,不能直接自己绘图,绘图需要使用工具sssss点继续画
closePath
将最后一次 lineTo
的点 和最后一次 moveTo
的点连起来的
两条线的交界处,如果使用的是 closePath
会补全缺口
1 | ctx.moveTo( 100, 100 ); |
fill
可以将闭合的图形进行填充
非零填充原则
从一个闭合空间引出一条直线,如果该直线两边的箭头数量不相等,则要填充,如果相等则不填充
一边有一个箭头就+1
另一边有一个箭头就-1
如何绘制曲线?
使用 for
循环给每一个 x
对应一个 y
值,x
和 y
的关系需要是个多次幂的方程
路径概念
路径就是一次绘图,包含该次绘图中的所有的状态,线宽 颜色 是否虚线
如果想要改变状态,就需要开启新的路径
beginPath
可以用来开启新的路径
线型相关属性
名称 | 描述 |
---|---|
lineWidth | 画线的时候的线的宽度 |
setLineDash() | 设置虚线各个线段的长度,参数是一个数组,会将数组中的数字循环使用 |
getLineDash() | 获取虚线各个线段的长度,如果是实线,获取到的是空数组 |
lineDashOffset | 设置虚线的偏移量,正值往左,负值往右 |
strokeStyle | 设置描边的,画线的颜色,颜色值可以为css中任意一种 |
fillStyle | 设置填充颜色,颜色值可以为css中任意一种 |
渐变色
将线划分为 256
份,每一份为一个颜色,新画一条线,依次递增,就形成了一个颜色渐变的线段