canvas基础

- 简介

  • 在js中进行图片的绘制
  • 往往用于全屏类的动画和小游戏的制作和图标的绘制

- 基本语法

  • <canvas width='400' height='500' id='canvas'></canvas>
  • var canvas = document.getElementById(‘canvas’);
  • var ctx = canvas.getContext(‘2d’);

- canvas常用方法

  • ctx.beginPath():设置起始路径
  • ctx.closePath():自动闭合开始点和终点
  • ctx.fillStyle = color:设置填充样式
  • ctx.strokeStyle = color:设置描边样式
  • ctx.fill():声明填充
  • ctx.stroke():声明描边
  • ctx.lineWidth = number:描边宽度

  • ctx.rect(x,yx,w,h):绘制矩形

  • x,y:起始点坐标
  • w:设定的宽度
  • h:设定的高度

  • ctx.clearRect(x,y,w,h):清除矩形

  • ctx.arc(x,y,r,start_point,end_point,countWise):绘制圆形

  • x,y:圆心坐标
  • r:圆心的半径
  • start_point:起始点(0-2*math.PI)
  • end_point:终止点(0-2*math.PI)
  • countWise:绘制方向|true、flase

- 绘制线段

  • moveTo(x,y):设定要开始线段的坐标
  • lineTo(x,y):目标线段坐标

  • arcTo(x1,y1,x2,y2,r):绘制弧度

  • x1,y1:控制点坐标
  • x2,y2:结束点坐标
  • r:绘制弧度的半径

  • ctx.quadraticCurveTo(x1,y1,x2,y2):绘制二次贝塞尔曲线

  • x1,y1:控制点坐标
  • x2,y2:结束点坐标
  • ctx.bezierCurveTo(x1,y1,x2,y2,x3,y3):绘制三次贝塞尔曲线
  • x1,y1:控制点坐标
  • x2,y2:结束点坐标
  • x3,y3:结束点坐标
    -
  • 关于css3中的贝塞尔曲线
  • 贝塞尔曲线是指过渡效果
  • ctx.createLinearGradient(x1,y1,x2,y2):设置线性渐变
  • x1,y1:起点坐标
  • x1,y1:起点坐标
  • lg.addColorStop(p,color):0-1设置颜色
  • 可以设置填充,描边:
  • var lg = ctx.cteateLinearGradient(x1,y1,x2,y2)
  • fillStyle = lg

  • ctx.createRadialGradient(x1,y1,r1,x2,y2,r2):设置径向渐变

  • x1,y1,r1:內圆圆心的坐标和半径
  • x2,y2,r2:外圆圆心的坐标和半径

  • 图形转换

  • ctx.translate(x,y):平移
  • x,y:平移的坐标
  • ctx.rotate(darg):旋转
  • darg:弧长 arg*Math.PI/180
  • ctx.scale(w,h):放大
  • w:宽度方向上倍数 h:高度方向上倍数

  • 绘制阴影

  • shadowOffsetX:水平平移距离
  • shadowOffsetY:垂直平移距离
  • shadowBlur:模糊大小
  • shadowColor:阴影颜色
  • v-shadow=distance*sin(180-角度)
  • h-shadow=distance*cos(180-角度)
  • spread=size-size*拓展
  • blur=size-spread

  • 绘制文本属性

  • ctx.font = ‘style size family’:设置文本样式
  • ctx.textBaseline = ‘top|midde|bottom’:设置文本基线
  • ctx.textAlign = ‘left|center|right’:设置水平对齐方式
  • ctx.fillText = ‘text,x,y’:设置实心字体
  • text:文字信息
  • x,y:文字位置
  • ctx.strokeText = ‘text,x,y’:设置空心字体
  • text:文字信息
  • x,y:文字位置

  • 绘制图片

  • drawImage(img,sx,sy,sw,sh,x,y,w,h)
  • sx,sy:裁剪坐标
  • sw,sh:裁剪高度
  • x,y:canvas中的坐标
  • w,h:对象高度
  • var img = new Image();img.src = ‘img/html.png’;img.onload = function(){ ctx.drawImage(img,0,0,399,302,0,0,800,800);}

图像组合

  • globalCompositeOperation:设置图像组合
  • sourse-over:新图像在原图像之上
  • destination-over:原图上在新图像之上
  • source-in:取交集部分显示新图像
  • destination-in:取交集部分显示原图像
  • sourse-atop:显示原图和交集部分 交集部分显示新图像
  • destination-atop:显示新图像和交集部分 交集部分显示原图像
  • sourse-out:显示新图像非交集部分
  • destination-out:显示原图像非交集部分
  • lighter:都显示,重叠部分颜色叠加
  • xor:费交集部分显示
  • copy:只显示新图像

  • 存入和读取

  • ctx.save():存入
  • ctx.restore():读取