SkyWorld

Just do what you want
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

HTML5学习笔记(1)——canvas绘图

Posted on 2011-09-22 21:15  SkyWorld  阅读(1301)  评论(3编辑  收藏  举报

  从今天起开始正式学习HTML5,HTML5和我们目前主流的HTML4相比具有更强的Web 网页的表现性能,其中的canvas属性的绘图圆角渐变功能使得网页的表现形式更加丰富多彩,另外HTML5的本地数据库等 Web 应用的功能使得WEB应用功能更加强大,正因为如此,HTML5被称作下一代的互联网的标准。

  好了,废话不多说,开始我们的HTML5之旅,今天开始学习的canvas。

  canvas属性是为了客户端绘制矢量图而设计,它没有自己的行为,简单的来说canvas自己并不能完成独立的绘图操作,它需借助Javascript来完成相关的绘图操作。

  那么在页面中,我们怎么添加canvas元素,方法很简单,用如下方式即可。

<!--为了便于后面的操作,我们给canvas元素添加了一个ID,宽度和高度-->
<canvas id="a" width="500" height="375">对不起,您的浏览器不支持canvas</canvas>

  canvas和大部分的成对标记一样,是成对的。为了便于后面的Javascript操作canvas进行绘图,我们在canvas标签中添加了一个ID,同时我们还设定了宽度和高度。<canvas></canvas>中间的内容有什么用呢?在支持canvas的浏览器中<canvas></canvas>中间的内容我们是看不到,而在不支持canvas的浏览器中,我们只能看到<canvas></canvas>之间的内容,canvas结合javascript所作的其他操作都将被忽略。

   例如,以上代码在IE8中运行结果如下图所示:(注:IE8不支持HTML5)

IE8中运行效果

  那么刚刚我说了,canvas它没有自己的行为,需要结合Javascript才能发挥它强大的功效。因此,以上代码即便在支持canvas的浏览器(如chrome)中也是看不到任何内容.的。所以,要发挥canvas的强大功能,我们还必须借助于Javascript这个强有力的工具。

  在canvas和Javascript强强联合之前,我们先来了解一下canvas在Javascript中的几个函数和属性。

  1. moveTo (x, y)  把画笔移动到指定点并作为线条的开始,简单的来说,就是我们要画线的起始点的坐标位置。

  2. lineTo(x,y)  绘制线条到指定的结束点,也就是说,我们的直线要画到坐标(x,y)处结束。

  3. strokeStyle  我们可以通过canvas的这个属性来设定要绘制直线的样式,例如  canvas.strokeStyle="#aaa"来会绘制淡灰色的直线。

  4. strokeStyle()  这个函数是开始绘制函数。当我们调用了moveTo (),lineTo()函数之后,直线并不会立马显示在浏览器区域,而需要通过strokeStyle()显示出来,你可以这样理解,moveTo(),lineTo()函数只是把直线画在了内存中,strokeStyle()函数才真正帮助我们把内容显示在了浏览器中。

  例如,我们可以通过一下javascript代码绘制一个淡灰色的坐标网格。

<script type="text/javascript"> 
var a_canvas = document.getElementById("a"); //获取canva元素节点
var context = a_canvas.getContext("2d"); //初始化canvas节点,参数设为2d
//通过循环,画出水平直线
for(var x=0.5; x<500; x+=20)
{
context.moveTo(x,0);
context.lineTo(x,375);
}
//通过循环,画出竖直直线
for(var y=0.5; y<375; y+=20)
{
context.moveTo(0,y);
context.lineTo(500,y);
}

context.beginPath(); //下面绘制的直线样式不一样,所以我们要用beginPath清除上面的样式
// 绘制水平X轴坐标
context.moveTo(0,40);
context.lineTo(240,40);
context.moveTo(260,40);
context.lineTo(500,40);
context.moveTo(495,35);
context.lineTo(500,40);
context.moveTo(495,45);
context.lineTo(500,40);

//绘制竖直Y轴坐标
context.moveTo(60,0);
context.lineTo(60,153);
context.moveTo(60,173);
context.lineTo(60,375);
context.moveTo(65,370);
context.lineTo(60,375);
context.moveTo(55,370);
context.lineTo(60,375);

context.strokeStyle="#f00";
context.stroke();
</script>


在chrome中运行的结果如下:

  接下来要讲的是文本的绘制,在讲文本的绘制之前,我们先要了解函数canvas在Javascript中关于文本绘制操作的两个属性和一个函数。

  1. font  我们可以通过font属性来设置要绘制文本的样式大小字体等内容,如canvas.font="blod,12px,sans-serif",那么我们绘制出来的文本将以粗体,12px大小,sans-serif显示。

  2.  fontStyle 我们可以通过fontStyle属性来设置要绘制文本的其他样式,如canvas.fontStyle="green";那么我们绘制出来的字体讲呈绿色。

  3.  fillText("string",x,y)  我们可以通过fillText来绘制文本,string为要绘制的文本信息,x,y为要绘制位置信息。

  例如,我们在以上Javascript代码中添加以下代码。

    //绘制文字"x","y","hello SkyWorld", "Just do what you want"
context.font="bold 18px sans-serif";
context.fillText("x",245,44);
context.fillText("y",56,164);
context.fillStyle="green";
context.font="bold 30px Bradley Hand ITC";
context.fillText("Hello SkyWorld",100,180);
context.fillText("Just do what you want",140,240);

  那么我们看到的效果是:

  那么至此canvas的基本用法已经给大家演示完毕,相信大家对HTML5中的canvas已经有了初步的认识,但是canvas的用法远远不止这些,你可以用canvas结合Javascript做出各种惊人的效果,不怕做不到,只要你想得到。

  效果演示地址:http://xiaowu.shnow.cn/html5/note1/canvas.html