用HTML5的Canvas写字的例子

最近项目轻松了一些,就抱着学习的态度阅读了HTML Canvas 2D Context的内容。又想到以前曾经在Android上做过原笔迹手写的内容,就想试着在HTML5中简单做一下看看。摸索着完成了demo。下面是在Google Chrome 13.0版本上的效果。

用HTML5的Canvas写字的例子

下面附上代码,仅仅为学习,没做优化,作为例子吧。

注:要在支持HTML5的浏览器上运行才能看到效果。

 
  1. <html>  
  2.  <head>  
  3.   <title>write demo</title>  
  4.   </head>  
  5.  <body>  
  6. <canvas width="800" height="450"></canvas>  
  7. <script>  
  8.  var canvas = document.getElementsByTagName('canvas')[0];  
  9.  canvas.addEventListener('mousemove', onMouseMove, false);  
  10.  canvas.addEventListener('mousedown', onMouseDown, false);  
  11.  canvas.addEventListener('mouseup', onMouseUp, false);  
  12.   
  13.  var context = canvas.getContext('2d');  
  14.  var linex = new Array();  
  15.  var liney = new Array();  
  16.  var linen = new Array();  
  17.   
  18.  var lastX = -1;  
  19.  var lastY = -1;  
  20.  var hue = 0;  
  21.  var flag = 0;  
  22.   
  23.  function onMouseMove(evt) {  
  24.     if (flag == 1) {  
  25.        linex.push(evt.layerX);  
  26.        liney.push(evt.layerY);  
  27.        linen.push(1);  
  28.        context.save();  
  29.        context.translate(context.canvas.width/2, context.canvas.height/2);  
  30.        context.translate(-context.canvas.width/2, -context.canvas.height/2);  
  31.        context.beginPath();  
  32.        context.lineWidth = 5 + Math.random() * 10;  
  33.   
  34.        for (var i=1;i<linex.length;i++) {  
  35.              lastX = linex[i];  
  36.              lastY = liney[i];  
  37.              if (linen[i] == 0) {  
  38.                 context.moveTo(lastX,lastY);  
  39.              } else {  
  40.                 context.lineTo(lastX,lastY);  
  41.              }  
  42.        }  
  43.   
  44.        huehue = hue + 10 * Math.random();  
  45.        context.strokeStyle = 'hsl(' + hue + ', 50%, 50%)';  
  46.        context.shadowColor = 'white';  
  47.        context.shadowBlur = 10;  
  48.        context.stroke();  
  49.        context.restore();  
  50.     }  
  51.  }  
  52.  function onMouseDown(evt) {  
  53.     flag = 1;  
  54.     linex.push(evt.layerX);  
  55.     liney.push(evt.layerY);  
  56.     linen.push(0);  
  57.  }  
  58.  function onMouseUp(evt) {  
  59.     flag = 0;  
  60.      linex.push(evt.layerX);  
  61.      liney.push(evt.layerY);  
  62.     linen.push(0);  
  63.  }  
  64. </script>  
  65. </body>  
  66. </html>  

 

 

 

相关推荐