码迷,mamicode.com
首页 > Web开发 > 详细

前端-HTML5 canvas学习

时间:2016-03-04 22:26:35      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

canvas元素算是HTML5添加的最受欢迎的功能了。它是通过在页面中设定一个区域,然后用脚本来编辑图形。

可像下面这样来引入一个canvas图像

<canvas id="myCanvas"></canvas>

<script type="text/javascript">
  var canvas = document.getElementById(‘myCanvas‘);
  var cxt = canvas.getContext(‘2d‘);

 var img = new Image();

 img.src = "flower.png";

  Image.onload = function(){cxt.drawImage(img,0,0)} 
</script>

 

在canvas里显示图片非常简单,可以通过修正层为图片添加印章、拉伸图片或者修改图片等,并且图片通常会成为canvas上的焦点。用HTML5 Canvas API内置的几个简单命令就可以轻松为canvas添加图片内容。

不过引入图片后,必须要等图片完全加载完才能对其进行操作,浏览器通常会在页面脚本执行同时异步加载图片。如果试图在图片未完全加载之前就将其呈现在canvas上,那么canvas将不会显现任何图片。因此要注意在呈现图片之前要确保图片已经加载完毕。

为了保证呈现之前图片已经加载完毕,下面用一个回调函数来使仅当图像 加载完成后才执行后续代码。

function load(){
  var ima = new Image();
  ima.src = "test.jpg";
  if (ima.complete){
    drawIma(ima);
  }
  else{
    ima.onload = function(){
      drawIma(ima);
    };
    ima.onerror = function(){
      window.alert(‘图片加载失败‘);
    };
  };
}

if (document.all){
  window.attachEvent(‘onload‘,load);
}
else{
  window.addEventListener(‘load‘,load,false);
}

canvas和SVG以及VML之间的差异:canvas使用一个基于javascript的脚本来绘图,而SVG和VML使用XML来绘图。

大多数canvas绘图都没有定义在canvas本身上,而是像上面 var cxt = canvas.getContext(‘2d‘);定义在了通过getContext()方法获得的“绘图环境”上,这里是创建一个2d的绘图环境。

Canvas API也使用了路径的表示法,首先用beginPath()开始,用closePath()关闭一条打开的子路径。一定定义了路径,其他的方法,如fill()都是对此路径的操作。

如果画布的路径是打开的,closePath()通过添加一条线条连接当前点和子路径起始点来关闭它。如果子路径已经关闭了,这个方法不做任何事。一旦子路径闭合,就不能再为其添加更多的直线或曲线了。要继续向该路径添加,需要通过moveTo()开始一条新的子路径。

最后丢出几个canvas的小Demo.

https://github.com/SunshineLXH/examples/tree/master/canvas

前端-HTML5 canvas学习

标签:

原文地址:http://www.cnblogs.com/sunshinegirl-7/p/5243366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!