canvas特效代码详解(1)
canvas是一个就基于像素的画图h5元素。
具体的知识点详见:http://www.cnblogs.com/flyingLcode/p/7719026.html
下面以一些基础的代码加深对canvas的理解
绘制路径以及添加文本
(这里以时钟为例)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 canvas{ 8 border: 1px solid #000; 9 margin: 200px 400px; 10 } 11 </style> 12 </head> 13 <body> 14 <canvas id="canvas" width="400" height="400"></canvas> 15 <script type="text/javascript"> 16 var canvas = document.getElementById("canvas"); 17 if(canvas.getContext){ 18 var context = canvas.getContext("2d"); 19 // 开始路径 20 context.beginPath(); 21 // 外圆 22 context.arc(100,100,99,0,2*Math.PI,false); 23 // 内圆 24 context.moveTo(194,100); 25 context.arc(100,100,94,0,2*Math.PI,false); 26 // 时针 27 context.moveTo(100,100); 28 context.lineTo(35,100); 29 // 分针 30 context.moveTo(100,100); 31 context.lineTo(100,15); 32 // 描边路径。调用stroke()方法把图形绘制到画布上去 33 context.stroke(); 34 // 使用fillText()方法绘制文本 35 context.font = "bold 14px Arial"; 36 context.textAlign = "center"; 37 context.textBaseline = "middle"; 38 context.fillText("12", 100, 20); 39 } 40 </script> 41 </body> 42 </html>
效果如下

绘制及清除矩形
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 canvas{ 8 border: 1px solid #000; 9 margin: 200px 300px; 10 } 11 </style> 12 </head> 13 <body> 14 <canvas id="canvas" width="400" height="400"></canvas> 15 <script type="text/javascript"> 16 var canvas = document.getElementById("canvas") 17 // 确定浏览器支持canvas元素 18 if(canvas.getContext){ 19 var context = canvas.getContext("2d"); 20 // 绘制红色矩形 21 context.fillStyle = "#ff0000"; 22 context.fillRect(50,50,200,200); 23 // 绘制蓝色矩形 24 context.fillStyle = "rgba(0,0,255,0.9)"; 25 context.fillRect(140,140,200,200); 26 // 在两个矩形重叠的地方切一个小矩形 27 context.clearRect(160,160,80,80); 28 } 29 </script> 30 </body> 31 </html>
效果如下:

设置矩形的阴影
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 canvas{ 8 border: 1px solid #000; 9 margin: 300px 300px; 10 } 11 </style> 12 </head> 13 <body> 14 <canvas id="canvas" width="200" height="200"></canvas> 15 <script type="text/javascript"> 16 var canvas = document.getElementById("canvas") 17 if(canvas.getContext){ 18 var context = canvas.getContext("2d"); 19 // 绘制红色矩形 20 context.fillStyle = "#ff0000"; 21 context.fillRect(10,10,20,20); 22 // 绘制蓝色矩形 23 context.fillStyle = "rgba(0,0,255,0.9)"; 24 context.fillRect(30,30,20,20); 25 // 设置阴影,必须写在要设置的元素之前 26 context.shadowOffsetX = 5; 27 context.shadowOffsetY = 5; 28 context.shadowColor = "rgba(0,0,0,0.5)"; 29 context.shadowBlur = 4; 30 // 绘制矩形 31 context.fillStyle = "yellowgreen"; 32 context.fillRect(50,50,20,20); 33 // 绘制矩形 34 context.fillStyle = "black"; 35 context.fillRect(70,70,20,20); 36 } 37 </script> 38 </body> 39 </html>
效果如下:

绘制图像
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 canvas{ 8 border: 1px solid #000; 9 } 10 </style> 11 </head> 12 <body> 13 <canvas id="canvas" width="840" height="400"></canvas> 14 <script type="text/javascript"> 15 var canvas = document.getElementById("canvas"); 16 var context = canvas.getContext("2d"); 17 18 var img = new Image; 19 // 使用onload方法 20 img.onload = function(){ 21 context.drawImage(img,20,20); 22 } 23 img.src = 'img/1.jpg'; 24 </script> 25 </body> 26 </html>
效果如下:

绘制渐变矩形
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 canvas{ 8 border: 1px solid #000; 9 margin: 100px 500px; 10 } 11 </style> 12 </head> 13 <body> 14 <canvas id="canvas" width="400" height="400"></canvas> 15 <script type="text/javascript"> 16 var canvas = document.getElementById("canvas"); 17 var context = canvas.getContext("2d"); 18 // 调用createLinearGradient()方法 19 var gradient = context.createLinearGradient(55,55,10,55,55,30); 20 // 使用addColorStop()方法来指定色标 21 gradient.addColorStop(0,"red"); 22 gradient.addColorStop(1,"black"); 23 // 绘制绿色矩形 24 context.fillStyle = "green"; 25 context.fillRect(10,10,50,50); 26 // 绘制渐变矩形 27 context.fillStyle = gradient; 28 context.fillRect(30,30,50,50); 29 </script> 30 </body> 31 </html>
效果如下


浙公网安备 33010602011771号