- Canvas的介绍
-
1.1、创建canvas元素
- canvas的定义:它是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术。<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图。SVG 绘图很容易编辑与生成,但功能明显要弱一些。
- canvas可以完成动画、游戏、图表、图像处理等原来需要Flash完成的一些功能。
-
<canvas id="can" width="800" height="600">不支持Canvas</canvas>
以上代码创建了一个宽度为800像素,高度为600像素的canvas。不建议使用CSS样式指定宽度和高度。
canvas标签中间的内容为替代显示内容,当浏览器不支持canvas标签时会显示出来。创建了canvas元素后,要在canvas元素上面绘制图象,首先必须获取canvas环境上下文:
canvas.getContext(画布上绘制的类型)
2d: 表示2维
experimental-webgl: 表示试验版3维
webgl:表示3维 -
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas绘图1</title> </head> <body> <canvas id="canvas1" width="800" height="600"></canvas> <script type="text/javascript"> //获得画布元素 var canvas1=document.getElementById("canvas1"); //获得2维绘图的上下文 var ctx=canvas1.getContext("2d"); //设置线宽 ctx.lineWidth=10; //设置线的颜色 ctx.strokeStyle="blue"; //将画笔移动到00点 ctx.moveTo(0,0); //画线到800,600的坐标 ctx.lineTo(800,600); //执行画线 ctx.stroke(); </script> </body> </html>
1.2、画线
-
context.moveTo(x,y)
把画笔移动到x,y坐标,建立新的子路径。
context.lineTo(x,y)
建立上一个点到x,y坐标的直线,如果没有上一个点,则等同于moveTo(x,y),把(x,y)添加到子路径中。context.stroke()
描绘子路径//设置线宽 -
ctx.lineWidth = 10; //设置线的颜色 ctx.strokeStyle = "blue"; //将画笔移到x0,y0处 context.moveTo(x0, y0); //从x0,y0到x1,y1画一条线 ontext.lineTo(x1, y1); //从x1,y1到x2,y2画条线 ontext.lineTo(x2, y2); //执行填充 ontext.fill(); //执行画线 context.stroke();
结合javascript事件实现鼠标自由划线:
-
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas绘图2</title> </head> <body> <canvas id="canvas1" width="800" height="600"></canvas> <script type="text/javascript"> //获得画布元素 var canvas1 = document.getElementById("canvas1"); //获得2维绘图的上下文 var ctx = canvas1.getContext("2d"); //设置线宽 ctx.lineWidth = 10; //设置线的颜色 ctx.strokeStyle = "blue"; canvas1.onmousemove=function(e){ //划线到当前客户端的x与y座标 ctx.lineTo(e.clientX, e.clientY); //执行画线 ctx.stroke(); } </script> </body> </html>