HTML5 提供了画布(canvas)标签,通过与Javascript结合使用,可以在网页上绘制图像。Canvas是一个矩形区域,使用Javascript可以控制其每一个像素。本文将对canvas标签进行简要的学习。

  1、canvas标签说明

canvas标签是一个矩形区域,它包含两个属性width和height,分别表示矩形区域的宽和高,这两个属性都是可选的,并且都可以通过css来设定,他们的默认值是300px和150px。canvas在网页中的形式如下:

view source print?
1 <canvas id="myCanvas" width=”300” height=”200” style="border:1px solid #c3c3c3;">
2 Your browser does not support the canvas element.
3 </canvas>

解析:

为canvas设置id属性是便于Javascript调用;

第二行是当浏览器不支持canvas标签时,将显示这行文字。

  2、检测浏览器支持

  Canvas标签并没有得到目前所有浏览器的支持,因此在使用canvas绘图的时候,要先检测客户端浏览器是否支持。下面的示例将通过Javascript判断浏览器是否支持:

view source print?
01 <canvas id="myCanvas" width=”300” height=”200” style="border:1px solid #c3c3c3;">
02 Your browser does not support the canvas element.
03 </canvas>
04 <script type="text/javascript">
05     var myCanvas = document.getElementById("myCanvas");
06     if (!myCanvas.getContext)
07     {
08         alert("Your browser does not support the canvas element.");
09     }
10     else
11     {
12         // do something here
13     }
14 </script>

解析:

  上面的Javascript代码通过判断getContext方法是否为空来判断浏览器是否支持canvas标签。

  3、绘制线条和图案

在没有canvas之前,想要在网页上面绘制线条或图案,是非常麻烦且不兼容的。我曾在《js画直线》一文中转载了网络上常用的在IE和FF中绘制线条的方法,但如果想要这些方法通用,则是不可能的。但现在有了canvas标签,一切就变得简单了。

现在,你只需要在页面上添加canvas标签,并通过Javascript调用它的相应方法,就可以轻松的在页面上绘制线条和图案。

view source print?
01 //绘制线条<BR><canvas id="myCanvas"  style="border:1px solid #c3c3c3;">
02 Your browser does not support the canvas element.
03 </canvas>
04 <script type="text/javascript">
05     var myCanvas = document.getElementById("myCanvas");
06     if (!myCanvas.getContext)
07     {
08         alert("Your browser does not support the canvas element.");
09     }
10     else
11     {
12         var myContext = myCanvas.getContext("2d");
13         myContext.moveTo(200, 150);
14         myContext.lineTo(100, 100);
15         myContext.lineTo(200, 50);
16         myContext.strokeStyle = "#FF0000";
17         myContext.lineWidth = 4;
18         myContext.stroke();
19     }   
20 </script>

解析:

  显示在页面中放置了一个canvas标签,设定id、width、height等属性,并为这个标签设定边框。
  在Javascript中检测浏览器是否支持
  当浏览器支持的时候开始调用getContext方法获得绘图的上下文(这地方很像vc中的GDI绘图~~),目前只提供了2D上下文,将来还有可能支持OpenGL ES的3D上下文。
  moveTo方法是将当前位置移动到指定的坐标
  lineTo方法是向指定的左边绘制直线
  strokeStyle 属性是指定线条的颜色,在本例子中指定为红色
  lineWidth 属性设置线条的粗细,这里设置为4px
  stroke方法则是将直线显示出来。貌似是之前只是规定了哪里有线条,并没有显示,当调用这个方法后,线条才可以显示。

view source print?
01 //绘制图案<BR><canvas id="myCanvas" width="300" height="200"  style="border:1px solid #c3c3c3;">
02 Your browser does not support the canvas element.
03 </canvas>
04 <script type="text/javascript">
05     var myCanvas = document.getElementById("myCanvas");
06     if (!myCanvas.getContext)
07     {
08         alert("Your browser does not support the canvas element.");
09     }
10     else
11     {
12         var myContext = myCanvas.getContext("2d");
13         myContext.fillStyle = "rgb(200,0,0)";
14         myContext.fillRect(10, 10, 55, 50);
15         myContext.fillStyle = "rgba(0, 0, 200, 0.5)";
16         myContext.fillRect(30, 30, 55, 50);
17         myContext.fillRect(100, 0, 150, 50);
18         myContext.strokeRect(100, 60, 150, 50);
19         myContext.clearRect(130, 10, 90, 30);
20     }
21 </script>

解析:

  直接到fillStyle属性,之前的代码是相同的,不再赘言。
  fillStyle属性设定了填充的颜色、透明度等,如果设置为"rgb(200,0,0)",则表示一个颜色,不透明;如果设置  为"rgba(0,0,200,0.5)",则表示颜色为rgb(0,0,200),透明度为50%,
  fillRect方法是绘制一个矩形,这个矩形区域没有边框,只有填充色。这个方法有四个参数,前两个表示左上角的坐标位 置,第三个参数为长度,第四个参数为高度。
  strokeRect方法绘制一个带边框的矩形。该方法的四个参数的解释同上。
  clearRect方法是清除一个矩形区域,被清除的区域将没有任何线条。该方法的四个参数的解释同上。

  4、绘制路径

路径是绘制自定义图形的好方法,在canvas中通过beginPath()方法开始绘制路径,这个时侯你就可以绘制直线、曲线等,绘制完成后调用fill()和stroke()完成填充和设置边框,通过closePath()方法结束路径的绘制。下面的例子讲演时如何绘制路径:

view source print?
01 <canvas id="myCanvas" width="300" height="200"  style="border:1px solid #c3c3c3;">
02 Your browser does not support the canvas element.
03 </canvas>
04 <script type="text/javascript">
05     var myCanvas = document.getElementById("myCanvas");
06     if (!myCanvas.getContext)
07     {
08         alert("Your browser does not support the canvas element.");
09     }
10     else
11     {
12         var myContext = myCanvas.getContext("2d");
13         myContext.fillStyle = '#0000ff';
14         myContext.strokeStyle = '#ff0000';
15         myContext.lineWidth = 2;
16         myContext.beginPath();
17         myContext.moveTo(30, 30);
18         myContext.lineTo(150, 30);
19         myContext.lineTo(150, 120);
20         myContext.lineTo(90, 100);
21         myContext.lineTo(120, 60);
22         myContext.lineTo(30, 30);
23         myContext.fill();
24         myContext.stroke();
25         myContext.closePath();
26     }

解析:

  在获得渲染上下文后,设置了填充色、边框色和边框宽度。
  调用beginPath()方法开始绘制路径
  通过lineTo()方法绘制一个闭合的自定义图形
  调用fill()方法进行填充
  调用stroke()方法设置边框
  调用closePath()方法结束路径的绘制

HTML5之Canvas标签简要学习相关推荐

  1. html实现颜料效果,JS基于HTML5的canvas标签实现炫目的色相球动画效果实例

    本文实例讲述了JS基于HTML5的canvas标签实现色相球效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: JS canvas标签制作色相球 var canvas,ctx, ...

  2. 使用HTML5的Canvas标签实现绘图板内拖拽元素

    第一次在csdn发表文章,纯属试水之作.希望各位多多指教. 直奔主题吧.本人使用了一下HTML5的Canvas标签之后,挺好用的各种画线条,图案等.能实现对Canvas标签内的像素进行随意编辑.加上各 ...

  3. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

  4. 用HTML5新增canvas标签实现个性时钟效果

    先看看效果图吧 目录 简介 实现思路 代码 html部分 css部分 js部分 绘制函数部分: 完整代码如下 简介 十二小时制的时钟,最内层是秒针,中间为分针,外层为时针. 中心显示的是当前日期和时间 ...

  5. canvas 文字颜色_一篇图文学会HTML5的canvas标签,直线曲线文字渐变,统统可以有...

    什么是 canvas? 通常情况下,我们可以认为和 是同一个效果的html元素,他们都是在浏览器显示区域绘制一个矩形的"区域".这个区域我们可以附以选择器进行丰富的显示效果. 但是 ...

  6. html5引入的新标签canvas,HTML页面中添加Canvas标签示例

    怎样在html5中添加canvas标签 标签是 HTML 5 中的新标签. 定义和用法 标签定义图形,比如图表和其他图像. 标签只是图形容器,您必须使用脚本来绘制图形. 实例 通过 canvas 元素 ...

  7. 使用 HTML5 Canvas 标签的贪吃蛇游戏

    https://thoughtbot.com/blog/html5-canvas-snake-game 保罗·詹森  2009 年 12 月 31 日 更新于 2019年3 月 9 日 这篇文章最初发 ...

  8. html5的canvas绘制时钟

    为什么80%的码农都做不了架构师?>>>    最近一直在学习html5,学到了html5的canvas标签,这个画布真的是很强大,它有对应的javascript的api的支持,你可 ...

  9. 把canvas标签里的图像下载成本地图片文件

    有些在线图片网站,进行图像处理比如去除背景后,结果图片是以html5里canvas标签的形式显示出来的,我们没有办法通过右键点击图片然后下载的方式去保存到本地. [外链图片转存失败,源站可能有防盗链机 ...

最新文章

  1. 2016年11月2日——jQuery源码学习笔记
  2. 计算机视觉——利用openCV与Socket结合进行远程摄像头实时视频传输并保存图片数据
  3. [Cocos2d-x For WP8]Scene场景
  4. mysql数据库操作指令汇总
  5. matlab 工业相机 曝光时间_CCD高清工业相机的主要参数及应用
  6. python 颜色_如何使用python中matplotlib库分析图像颜色
  7. STL常见算法transform以及二分查找,以及lambda表达式
  8. 314.二叉树的垂直遍历
  9. Bootstrap相关优质项目推荐
  10. 禁止横竖屏切换、强制横竖屏
  11. juki贴片机是什么牌子,juki贴片机型号一览表
  12. 电脑键盘按键都代表着什么意思?
  13. 诸葛——如何摆脱APP速死症?
  14. php if多条件,php – 多个IF语句条件
  15. wordpress 替换国外主题字体为微软雅黑
  16. IE-LAB网络实验室:华为AAA认证详解
  17. 六种礼仪帮助你赢得面试
  18. kernel_neon_begin
  19. python第三方库卸载方法
  20. 【Axure】做手机原型时,如何让界面在浏览器中居中?(已解决,有图例)

热门文章

  1. Attention Model(注意力模型)思想初探
  2. ServerSocket01
  3. 很好的Markdown开源库
  4. VS2005 / windows sdk7.1配置
  5. Happy WS 之 控制台 -- Happy Console (一)
  6. android点滴13:Eclipse连接不上模拟器(一片空白,无报错)
  7. 《深入浅出WPF》笔记——事件篇
  8. NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
  9. ExtJs之Ext.grid.GridPanel(部分未完)
  10. PHP语言 -- 数组