当前位置:首页 / 网页制作 / HTML/Xhtml教程 / 深入了解HTML5 Canvas标签的基本用法
深入了解HTML5 Canvas标签的基本用法
芯晴素材特效 分类:HTML/Xhtml教程 发布日期:2018-05-09

这篇文章介绍的内容是深入了解HTML5 Canvas标签的基本用法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

基本用在Canvas中绘制图形,一般需要五步,依次为:

1)创建画布

在HTML代码的body中,使用布的默认宽度为300px,高度为150px,可以通过

1
2
3
4
5
6
7
<canvas
  
id="canvas"
    width="300"
    height="300"
>
</canvas>

上述代码,在页面中创建了一个画布,其id为"canvas",宽度为300px,高为300px。

说明:

1、默认情况下,画布本身没有任何外观,只是一块透明区域,什么也看不见,可以通过CSS来控制,让其可见。跟其它HTML元素一样,也可以通过CSS来定义canvas元素的尺寸、增加边框、设置内边距、外边距等。并且,CSS属性的继承规则也同样适用,如在canvas内添加的文字,默认会继承canvas元素本身的字体属性。

需要特别注意的是,画布的尺寸和CSS定义的尺寸是完全不同的概念。画布的尺寸是由画布元素的width和height属性定义的,而CSS中定义的尺寸是画布元素在页面中显示的尺寸。如果两者定义的尺寸不相同,则画布上的像素会自动缩放,以适合CSS中定义的尺寸。另外,画布中的坐标,也是根据画布的width和height属性定义的。

2、画布的尺寸一旦定义,就不能修改,除非重置画布。重置画布的width属性或height属性,都会清空整个画布,擦除当前路径,并重置所有的图形属性到初始状态。

3、由于2)获取绘制上下文

现在画布已经有了,要在画布上绘制图形,还需要一只画笔。获取画笔的方法如下:

1
2
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

由于画笔是属于画布的,所以先要调用getElementById()方法获得画布的访问权。然后,调用画布对象的getContext()方法来获取画笔,这里的字符串参数"2d",用来定义画笔的种类,"2d"表示绘制二维图形的画笔。当然,还会有"3d",但目前还不支持。画笔在Canvas 中被称作“绘制上下文”,Canvas API基本上都是定义在“绘制上下文”对象上,而非

3)定义绘制路径

Canvas中的所有基本图形,都是根据路径来绘制的。首先,调用beginPath()方法开始一条新的路径;然后,定义路径及子路径;最后,调用closePath()方法来关闭。代码如下:

1
2
3
context.beginPath();
context.rect(20, 40, 200, 80);
context.closePath();

上述代码中,rect()方法绘制了一条矩形路径,该矩形路径的左上顶点坐标为x=20,y=40,矩形宽度为200px,长度为80px。

说明:Canvas的坐标系

默认情况下,Canvas 的坐标系以Canvas 元素的左上角为坐标原点(0, 0)。水平方向为x轴,并向右增长;垂直方向为y轴,并向下增长。如图 4‑1所示:

Canvas的默认坐标系统

图4-1 Canvas的默认坐标系统

画布上每一个点的坐标都直接映射到一个CSS像素上,点可以使用浮点数来指定坐标,但它不会自动转换为整型值。

需要注意的是,此时,所绘制的内容并不会立即显示出来。因为这里只是定义一条不可见的路径,并未在画布上绘制任何图形。稍后,可以调用stroke()或fill()方法,来执行绘制动作,使其可见。

4)设置图形属性

1
2
context.strokeStyle = '#f00';  // 设置线条样式
context.fillStyle = "#ccc";   // 设置填充样式

上述代码设置矩形路径的轮廓线条的颜色为红色(#f00),填充颜色为灰色(#ccc)。该步骤为可选,如果省略,则使用Canvas提供的默认属性绘图。

5)绘制图形

Canvas默认提供两种绘制方法:stroke()方法和fill()方法。stroke()方法沿着路径的坐标点依次绘制线条,fill()方法填充路径形成的闭合区域。

这两个方法都作用在当前路径的所有子路径上,并且都不更改当前路径,所以它们可以被同时调用。代码如下:

1
2
context.stroke();
context.fill();

如果存在多条路径,则每条路径都要分别调用stroke()方法或fill()方法,否则,该路径不会被绘制,该路径所定义的图形不会显示在画布中。

至此,在画布中绘制图形的过程就全部完成了,图形已经真正绘制到画布上了。当然,在实际应用中,最好将这些绘制过程封装在一个函数中,并在页面加载完成后,再调用绘制函数来绘制图形。本实例的完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<canvas id="canvas" width="300" height="300"></canvas>
<script src="jquery.js"></script>
<script>
$(function(){
   drawRect();
});
function drawRect() {
  var canvas  = document.getElementById("canvas");
  var context = canvas.getContext('2d');
      
  context.beginPath();
  context.rect(20, 40, 200, 80);
  context.closePath();
  context.strokeStyle = '#f00';
  context.fillStyle = "#ccc";
  context.stroke();
  context.fill();
}
</script>

在浏览器中的运行效果如图 4‑2所示:

Canvas中绘制图形

图4-2 Canvas中绘制图形 

版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系821794221#qq.com(#换@),我们将尽快处理。

您可能在找这些

  • 内容标签:

热门素材

HTML5手机登录注册表单网页下载

2017-03-14   浏览:345

表单效果之输入框随鼠标点击换色

2013-01-03   浏览:8126

音乐专辑推荐展示JS网页下载

2017-03-12   浏览:217

html5酒店预订日期选择手机日历

2017-03-14   浏览:500

jq左右透明遮罩图片切换网页下载

2017-03-15   浏览:186

jq多图图片通栏切换网页下载

2017-03-15   浏览:346

漂亮的JS滑动门式图片自动切换效果

2013-01-14   浏览:9505

jQuery可自定义高度图片瀑布流网页下载

2017-03-14   浏览:101

jq二维码生成插件

2017-03-19   浏览:146

一款漂亮的蓝色风格CSS竖向菜单

2013-01-06   浏览:8009

jq双重滚动效果

2017-03-19   浏览:337

[酷] 模仿Windows飞行视窗的登陆框

2012-12-31   浏览:8245