您好,欢迎访问一九零五行业门户网

Canvas入门(1):绘制矩形、圆、直线、曲线等基本图形_html/css_WEB-ITnose

来源:http://www.ido321.com/968.html
一、canvas的基础知识
canvas是html 5中新增的元素,专门用于绘制图形。canvas元素就相当于一块“画布”,一块无色的透明区域,需要利用javascript编写在其中进行绘画的脚本。
在页面放置canvas元素很简单,利用标签,同时指定几个基本的属性:id,width和height。接下来通过几个小案例,跟我入门canvas吧~~~^_^~~~
二、canvas小案例(测试结果来自google最新版本)
1、绘制矩形
canvas.html:
1:
2:
3:
4:
5: canvas元素学习
6:
8:
9:
10: canvas元素学习
11:
12:
13:
canvas.js:
1: window.onload=function()
2: {
3: // 获取canvas 的id
4: var canvas = document.getelementbyid('canvas');
5: if (canvas == null)
6: {
7: return false;
8: }
9: // 获取上下文
10: var context = canvas.getcontext('2d');
11: // 设置填充的样式
12: context.fillstyle = #eeeeff;
13: // 绘制矩形,以fillstyle填充,fillrect(strokerect)前两个参数是矩形左上角位置,后两个参数分别是宽和高
//默认原点是canvas的左上角
14: context.fillrect(0,0,400,300);
15: context.fillstyle = 'red';
16: // 设置边框的样式
17: context.strokestyle = 'blue';
18: // 设置边框大小
19: context.linewidth = 2;
20: context.fillrect(50,50,100,100);
21: // 绘制矩形边框
22: context.strokerect(50,50,100,100);
23: }
效果:
2、绘制圆形:使用路径绘制
1: // 获取canvas 的id



2: var canvas = document.getelementbyid('canvas');



3: if (canvas == null)



4: {



5: return false;



6: }



7: // 获取上下文



8: var context = canvas.getcontext('2d');



9: // 设置填充的样式



10: context.fillstyle = #eeeeff;



11: // 绘制矩形,以fillstyle填充



12: context.fillrect(0,0,400,300);



13: for(var i = 0; i<9; i++)
14: {
15: // 创建路径
16: context.beginpath();
17: // 绘制圆形路径
18: context.arc(i*25, i*25, i*10, 0, math.pi * 2, true);
19: // 关闭路径,如果不关闭,则图像会重叠
20: context.closepath();
21: context.fillstyle = 'rgba(255,0,0,0.25)';
22: // 以fillstyle填充
23: context.fill();
24: }
arc()绘制圆弧,其参数如下
arc(x,y,radius,startangle,endangle,anticlockwise):x,y 是圆弧的圆心位置,radius是半径,startangle和endangle是起始和结束的角度,单位是弧度(度数必须转为弧 度),anticlockwise是一个布尔值,true表示顺时针绘制图像,false表示逆时针绘制。起始角度是0,结束角度是360(pi*2)就 可以绘制圆形。
效果:
3、绘制直线
绘制直线用到moveto()和lineto()两个方法
1: // 获取canvas 的id



2: var canvas = document.getelementbyid('canvas');



3: if (canvas == null)



4: {



5: return false;



6: }



7: // 获取上下文



8: var context = canvas.getcontext('2d');



9: // 设置填充的样式



10: context.fillstyle = #eeeeff;



11: // 绘制矩形,以fillstyle填充



12: context.fillrect(0,0,400,300);



13: context.beginpath();
//参数线的起点坐标
14: context.moveto(50,50);
//参数线的终点坐标
15: context.lineto(100,100);
16: context.closepath();
//关闭路径之后绘制图形
17: context.strokestyle = 'red';
18: context.stroke();
效果:
绘制一个复杂点的
1: // 获取canvas 的id



2: var canvas = document.getelementbyid('canvas');



3: if (canvas == null)



4: {



5: return false;



6: }



7: // 获取上下文



8: var context = canvas.getcontext('2d');



9: // 设置填充的样式



10: context.fillstyle = #eeeeff;



11: // 绘制矩形,以fillstyle填充



12: context.fillrect(0,0,400,300);



13: var dx = 150;

14: var dy = 150;

15: var s = 100;

16: // 创建路径

17: context.beginpath();

18: context.fillstyle = 'rgb(100,255,100)';

19: context.strokestyle = 'rgb(0,0100)';

20: var x = math.sin(0);

21: var y = math.cos(0);

22: var dig = math.pi/15 *11;

23: for (var i = 0; i < 30; i++) {
24: var x = math.sin(i * dig);
25: var y = math.cos(i * dig);
26: context.lineto(dx+x*s,dx+y*s);
27: }
28: context.closepath();
29: context.fill();
30: context.stroke();
效果:
4、绘制曲线:利用beziercurveto绘制贝济埃曲线
beziercurveto可以绘制曲线,是lineto的曲线版本
1: // 获取canvas 的id



2: var canvas = document.getelementbyid('canvas');



3: if (canvas == null)



4: {



5: return false;



6: }



7: // 获取上下文



8: var context = canvas.getcontext('2d');



9: // 设置填充的样式



10: context.fillstyle = #eeeeff;



11: // 绘制矩形,以fillstyle填充



12: context.fillrect(0,0,400,300);



13: var dx = 150;

14: var dy = 150;

15: var s = 100;

16: // 创建路径

17: context.beginpath();

18: context.fillstyle = 'rgb(100,255,100)';

19: context.strokestyle = 'rgb(0,0100)';

20: var x = math.sin(0);

21: var y = math.cos(0);

22: var dig = math.pi/15 *11;

23: context.moveto(dx,dy);
24: for (var i = 0; i < 30; i++) {
25: var x = math.sin(i * dig);
26: var y = math.cos(i * dig);
27: context.beziercurveto(dx+x*s,dy+y*s-100,dx+x*s+100,dy+y*s,dx+x*s,dy+y*s);
28: }
29: context.closepath();
30: context.fill();
31: context.stroke();
效果
下一篇:canvas入门(2):图形渐变和图像形变换
其它类似信息

推荐信息