canvas用途
- 游戏 小游戏
- 图表 报表 如 Charts插件
- 炫酷效果 banner
- 模拟器、图形编辑器 等
兼容性
IE9以上和其他浏览器
canvas 标签
属性
- width
- height
方法
- getContext() 参数 2d/webgl
注意
css设置的宽高跟width/height设置的宽高 不同
Context环境
通过 getContext方法获取绘图环境(绘图上下文)(对象)
绘制图形通过该对象提供的方法/属性
基本绘图
路径
- moveTo() 起始位置
- lineTo() 直线 ,如果没有moveTo() 第一个lineTo()替代 moveTo()
路径的开始和关闭
- beginPath() 开启路径
- closePath() 关闭路径 结束当前的路径,自动闭合
- 注意: 复杂的图形,一定要开启和关闭路径
描边 stroke()
- stroke() 方法
- strokeStyle 设置描边颜色
- lineWidth 设置描边的粗细
填充
- fill() 填充
- fillStyle 设置填充颜色
快速矩形工具
- rect(x, y, width, height) 绘制矩形路径
- strokeRect(x, y, width, height) 描边矩形
- fillRect(x,y,width,height) 填充矩形
- clearRect(x,y,w,h) 清除矩形 (矩形范围内的内容会被擦除)
圆形(圆弧)
- arc(x,y,r,start, end, wise) 绘制圆弧
- start/end是起始位置 单位是 弧度 , 360角度 = 2PI, 180角度 = PI
- 最后一个参数 顺时针(false)/逆时针(true) 默认false
内容
文字方法
- strokeText(text, x, y) 描边写字
- fillText(text, x, y) 填充写字
- measureText(text) 返回对象 包换文本的宽度
- font 属性 设置 大小、字体 如
cxt.fon="100px MicrosoftYaHei"
; - textAlign 属性 水平对齐方式 start(默认)/end/center/left/right
- textBaseline 属性 垂直对齐方式 alphabetic(默认)/top/bottom/middke/hanging/ideographic
绘制图片(插入图片)
插入图片
drawImage(img, x, y)
- img image的dom元素
- x,y 插入到 画布的位置 坐标
插入图片并改变大小
drawImage(img, x, y, width, height)
插入裁剪后的图片
drawImage(img, sx,sy,swidth,sheight, x, y, width, height)
- sx/sy: 图片上开始裁剪的位置
- swidth/sheight : 裁剪图片的大小
阴影
- shadowColor 阴影颜色
- shadowBlur 阴影的模糊值
- shadowOffsetX 阴影的左偏移量
- shadowOffsetY 阴影的右偏移量
渐变
线性渐变
var grd = cxt.createLinearGradien(x, y, x1, y1);
//参数:x,y起始坐标,x1,y1结束坐标
例如:
//创建线性渐变的对象,
var grd=ctx.createLinearGradient(0,0,170,0);
grd.addColorStop(0,"black"); //添加一个渐变颜色,第一个参数介于 0.0 与 1.0 之间的值,表示渐变中开始与结束之间的位置。
grd.addColorStop(1,"white"); //添加一个渐变颜色
ctx.fillStyle =grd; //关键点,把渐变设置到 填充的样式
径向渐变
- createRadiaGradient(x1, y1, r1, x2, y2, r2)
- addColorStop()
把背景图片作为填充
- createPattern(imgDom, repeate)
- 第二个参数 repeate/ repeat-x / repeat-y / no-repeat
变换
缩放
- sacle(x, y)
位移
- translate(x, y)
旋转
- rotate(angle)
环境的保存和恢复
- save()
- restore()
设置透明
- globalAlpha = number 设置不透明度
- 全局设置是对整个画布(绘图环境) 进行设置
限定绘图区域
- clip()
输出base64编码
- canvas.toDataURL(type, encoder)
- type为mime类型 image/jpeg image/gif image/png image/webp
画布渲染画布
把一个画布以图片的形式用 drawImage() 插入到另一个画布
这是一种canvas的优化手段
设置线条
- lineCap 属性 设置线条两端的形状 butt/round/square
- lineJoin 属性 设置线条夹角 miter/bevel/round
- miterLimit 属性 设置夹角斜角的最大长度 一般默认 10