HTML5+CSS3+jQuery Mobile+Bootstrap开发APP从入门到精通(视频教学版)
上QQ阅读APP看书,第一时间看更新

7.1 canvas概述

Canvas是一个新的HTML元素,可以被Script语言(通常是JavaScript)用来绘制图形。

7.1.1 添加canvas元素

<canvas>标记是一个矩形区域,包含两个属性width和height,分别表示矩形区域的宽度和高度。这两个属性都是可选的,并且都可以通过CSS来定义,其默认值是300像素和150像素。

Canvas在网页中常用的形式如下:

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

上面示例代码中,id表示画布对象名称;width和height分别表示宽度和高度。最初的画布是不可见的,此处为了观察该矩形区域,使用了CSS样式,即<style>标记,Style表示画布的样式。如果浏览器不支持画布标记,就会显示画布中间的提示信息。

画布canvas本身不具有绘制图形的功能,只是一个容器。如果读者对于Java语言有所了解,就会发现HTML5的画布和Java中的Panel面板非常相似,都可以在容器绘制图形。既然canvas画布元素放好了,就可以使用脚本语言JavaScript在网页上绘制图形了。

使用canvas结合JavaScript绘制图形,一般需要下面几个步骤。


01 JavaScript使用id来寻找canvas元素,即获取当前画布对象。

var c=document.getElementById("myCanvas");

02 创建context对象。

var cxt=c.getContext("2d");

getContext函数返回一个指定contextId的上下文对象,如果指定的id不被支持,则返回null,当前唯一被强制必须支持的是2D(也许在将来会有3D)。注意,指定的id对大小写是非常敏感的。对象cxt建立之后,就可以拥有多种绘制路径、矩形、圆形、字符及添加图像的方法。


03 绘制图形。

cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);

fillStyle函数将其染成红色。fillRect函数规定了形状、位置和尺寸,这两行代码绘制一个红色的矩形。

7.1.2 绘制矩形

单独的<canvas>标记只是在页面中定义了一个矩形区域,并无特别之处,开发人员只有配合使用JavaScript脚本,才能完成各种图形、线条及复杂图形的变换操作。与基于SVG来实现同样绘图效果进行比较,canvas绘图是一种像素级别的位图绘图技术,SVG则是一种矢量绘图技术。

使用canvas和JavaScript绘制一个矩形,可能会涉及一个或多个函数,这些函数如表7-1所示。

表7-1 绘制函数

【例7.1】(实例文件:ch07\7.1.html)

<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="300" height="200" style="border:1px solid
blue">Your browser does not support the canvas element</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="rgb(0,0,200)";
cxt.fillRect(10,20,100,100);
</script>
</body>
</html>

在上面的代码中,首先定义了一个画布对象,其id名称为myCanvas,高度和宽度分别为200像素和300像素,并定义了画布的边框显示样式。在JavaScript代码中,首先获取画布对象,然后使用getContext获取当前2d的上下文对象,并使用fillRect绘制一个矩形。其中涉及一个fillStyle属性,用于设置填充的颜色、透明度等,如果设置为“rgb(200,0,0)”,则表示一个颜色,不透明;如果设为“rgba(0,0,200,0.5)”,则表示一个颜色,透明度为50%。

在IE 11.0中浏览效果如图7-1所示,可以看到网页中,在一个蓝色边框中显示了一个蓝色矩形。

图7-1 绘制矩形