Canvas就是一个画布,能够进行画任何的线、图形、填充等一系列的操做,并且操做的画图就是js,因此让js编程到了嗑药的地步。另外Canvas不只仅提供简单的二维矢量绘图,也提供了三维的绘图,以及图片处理等一系列的api支持。javascript
(1) 要使用Canvas来绘制图形必须在页面中添加Canvas的标签。html
例如: <canvas id="demoCanvas" width="500" height="500"> <p>爷,你还在上个世纪吧,如今都html5了,您还在ie6时代?</p> </canvas>
html5
(2) 固然只有上面的标签,只能是建立好了一个画布,其中width和height属性就是设置画布的大小。Id属性也是必须的,后面要用Id来拿到当前的Canvas的Dom对象。经过此Canvase的Dom对象就能够获取他的上下文了,Canvas绘制图形都是靠着Canvas对象的上下文对象.java
代码:<script type="text/javascript">
编程
//第一步:获取canvas元素
var canvasDom = document.getElementById("demoCanvas");
//第二步:获取上下文
var context = canvasDom.getContext('2d');
</script>
(3) Context上下文默认两种绘制方式:第一种:绘制线(stroke),第二种:填充:fill。canvas
注意:决定了使用哪一种方式以后,在填充或者绘制线以前先设置样式。<body> <canvas id="demoCanvas" width="500" height="500"> <p>爷,你还在上个世纪吧,如今都html5了,您还在ie6时代?</p> </canvas> <!---下面将演示一种绘制矩形的demo---> <script type="text/javascript"> //第一步:获取canvas元素 var canvasDom = document.getElementById("demoCanvas"); //第二步:获取上下文 var context = canvasDom.getContext('2d'); //第三步:指定绘制线样式、颜色 context.strokeStyle = "red"; //第四步:绘制矩形,只有线。内容是空的 context.strokeRect(10, 10, 190, 100); //如下演示填充矩形。 context.fillStyle = "blue"; context.fillRect(110,110,100,100); </script> </body>
<body> <canvas id="demoCanvas" width="500" height="600"> </canvas> <script type="text/javascript"> //经过id得到当前的Canvas对象 var canvasDom = document.getElementById("demoCanvas"); //经过Canvas Dom对象获取Context的对象 var context = canvasDom.getContext("2d"); context.beginPath(); // 开始路径绘制 context.moveTo(20, 20); // 设置路径起点,坐标为(20,20) context.lineTo(200, 200); // 绘制一条到(200,20)的直线 context.lineTo(400, 20); context.closePath(); context.lineWidth = 2.0; // 设置线宽 context.strokeStyle = "#CC0000"; // 设置线的颜色 context.stroke(); // 进行线的着色,这时整条线才变得可见 </script> </body>五 、Canvas绘制文本
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //经过id得到当前的Canvas对象 var canvasDom = document.getElementById("demoCanvas"); //经过Canvas Dom对象获取Context的对象 var context = canvasDom.getContext("2d"); context.moveTo(200,200); // 设置字体 context.font = "Bold 50px Arial"; // 设置对齐方式 context.textAlign = "left"; // 设置填充颜色 context.fillStyle = "#005600"; // 设置字体内容,以及在画布上的位置 context.fillText("老马!", 10, 50); // 绘制空心字 context.strokeText("blog.itjeek.com!", 10, 100); </script>
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //经过id得到当前的Canvas对象 var canvasDom = document.getElementById("demoCanvas"); //经过Canvas Dom对象获取Context的对象 var context = canvasDom.getContext("2d"); context.beginPath();//开始绘制路径 //绘制以 (60,60)为圆心,50为半径长度,从0度到360度(PI是180度),最后一个参数表明顺时针旋转。 context.arc(60, 60, 50, 0, Math.PI * 2, true); context.lineWidth = 2.0;//线的宽度 context.strokeStyle = "#000";//线的样式 context.stroke();//绘制空心的,固然若是使用fill那就是填充了。 </script>
<canvas id="demoCanvas" width="500" height="600"></canvas> <script type="text/javascript"> //经过id得到当前的Canvas对象 var canvasDom = document.getElementById("demoCanvas"); //经过Canvas Dom对象获取Context的对象 var context = canvasDom.getContext("2d"); var image = new Image();//建立一张图片 image.src = "Images/a.png";//设置图片的路径 image.onload = function() {//当图片加载完成后 for (var i = 0; i < 10; i++) {//输出10张照片 //参数:(1)绘制的图片 (2)坐标x,(3)坐标y context.drawImage(image, 100 + i * 80, 100 + i * 80); } }; </script>