canvas介绍

canvas是一个可以使用脚本(通常为JavaScript)在其中绘制图形的 HTML 元素.它可以用于制作照片集或者制作简单(也可以是不简单)的动画

canvas 最早被Apple引入,用于Mac OS X 的 Dashboard,后来又在Safari和Google Chrome被实现. 基于Gecko 1.8的浏览器,比如 Firefox 1.5, 同样支持这个元素. canvas元素是WhatWG Web applications 1.0规范的一部分,也包含于HTML 5中.

canvas标签使用

canvas元素不被一些老的浏览器所支持, 但被支持于Firefox 1.5+, Opera 9+, 新版本的Safari, Chrome, 以及Internet Explorer 9.

如何检测浏览器支不支持canvas呢?我们可以这么写:

<canvas id="mycanvas" width="300" height="300">
	your brower doesn't support canvas!
</canvas>

这个时候,如果不支持canvas的浏览器就会忽视canvas标签,显示标签中的内容

要注意的是,如果不声明canvas宽高,默认canvas是300*150大小的

为什么不在样式表中声明宽高:由于canvas默认宽高是300*150的,假如在样式表中设置{width:300px;height:300px},相当于把画布宽高度缩放到300px,这个时候画布中的内容也会等比例进行缩放


绘制环境

现在我们可以获取到canvas绘图对象: getContent(‘2d’):现在只支持2d的场景,那有没有3d呢,有这么个东西(webgl),不过兼容性不大好

var ctx = $('mycanvas').getContext('2d');


绘制方块

  • fillRect(L,T,W,H):绘制填充性方块,默认颜色时黑色
  • strokeRect(L,T,W,H):带边框的方块,默认1px黑色边框
ctx.fillRect(50,50,50,50);
ctx.strokeRect(50.5,50.5,50,50);

为什么绘制带边框的方框时设置绘制起点时


设置绘图

  • fillStyle: 填充颜色(绘制canvas室友顺序的)
  • lineWidth: 线宽度
  • strokeStyle: 边框颜色

使用例子:

ctx.fillStyle = 'red';
ctx.strokeStyle = 'blue';
ctx.lineWidth = 2px;
ctx.fillRect(50,50,50,50);
ctx.strokeRect(50.5,50.5,50,50);

边界绘制

  • lineJoin :边界连接点样式 -miter(默认),round(圆角),bevel(斜角)
  • lineCap: 端点样式 -butt(默认),round(圆角),square(高度多出宽度一半的值)
ctx.fillStyle = 'red';
ctx.strokeStyle = 'blue';
ctx.lineWidth = 2px;
ctx.lineJoin = 'round';
ctx.fillRect(50,50,50,50);
ctx.strokeRect(50.5,50.5,50,50);

绘制路径

  • beginPath: 开始绘制路径
  • closePath:结束绘制路径
  • moveTo: 移动到坐标
  • lineTo: 直线
  • stroke:画线
  • fill: 填充,默认黑色
  • rect: 矩形区域
  • clearRect:删除一个画布的矩形区域
  • save: 保存路径
  • restore: 恢复路径

现在我们来试试画一个三角形:

ctx.beginPath();
ctx.moveTo(100,100);//定点到坐标处
ctx.lineTo(200,200);//画线结束到坐标处
ctx.lineTo(300,200);
ctx.closePath();//图形未闭合时,闭合开始到借书处
ctx.stroke();//绘制直线
ctx.fill();//填充

小例子

鼠标画线,方块自动滑动 canvas画图例子