明凯博客

关注网站技术,一个特立独行的程序员

HTML5中Canvas绘图各种基本图形的方法

canvas是html5的一部分,当然他们说的H5也并不是html5的意思,只是表示在手机浏览器中,更侠义的是在微信浏览器中打开的酷炫的网页。

曾几何时,我也觉得canvas真的酷爆了,各种什么烟花、酷炫的动画效果、canvas游戏等,都燃烧着我学习的热情。

后来通过学习,多看书,其实canvas并不复杂,要用到的东西也不多。

大概整理一下:

1、使用Canvas绘制直线:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html>
    <head>
        <meta charset="UTF-8"/>
    </head>
    <style type="text/css">
        canvas{border:dashed 2px #CCC}
    </style>
    <script type="text/javascript">
        function $$(id){
            return document.getElementById(id);
        }
        function pageLoad(){
            var can = $$('can');
            var cans = can.getContext('2d');
            cans.moveTo(20,30);//第一个起点
            cans.lineTo(120,90);//第二个点
            cans.lineTo(220,60);//第三个点(以第二个点为起点)
            cans.lineWidth=3;
            cans.strokeStyle = 'red';
            cans.stroke();
        }
    </script>
    <body onload="pageLoad();">
        <canvas id="can" width="400px" height="300px">4</canvas>
    </body>
</html>

代码预览

这里用到的两个API方法,moveTo和lineTo分别是线段的起点和终点坐标,变量为(X坐标,Y坐标),strokeStyle、stroke分别路径绘制样式和绘制路径。

2、绘制渐变线条

渐变线条就是颜色有渐变的效果,当然渐变的样式可以遵循路径的方向也可以不遵循路径的方向:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
    <head>
        <meta charset="UTF-8"/>
    </head>
    <style type="text/css">
        canvas{border:dashed 2px #CCC}
    </style>
    <script type="text/javascript">
        function $$(id){
            return document.getElementById(id);
        }
        function pageLoad(){
            var can = $$('can');
            var cans = can.getContext('2d');
            cans.moveTo(0,0);
            cans.lineTo(400,300);
            var gnt1 = cans.createLinearGradient(0,0,400,300);//线性渐变的起止坐标
            gnt1.addColorStop(0,'red');//创建渐变的开始颜色,0表示偏移量,个人理解为直线上的相对位置,最大为1,一个渐变中可以写任意个渐变颜色
            gnt1.addColorStop(1,'yellow');
            cans.lineWidth=3;
            cans.strokeStyle = gnt1;
            cans.stroke();
        }
    </script>
    <body onload="pageLoad();">
        <canvas id="can" width="400px" height="300px">4</canvas>
    </body>
</html>

代码预览


3、绘制矩形或正方形:

这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Canvas功能却很容易就能绘制,所以说HTML5的优越性是相当高的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
    <head>
        <meta charset="UTF-8"/>
    </head>
    <style type="text/css">
        canvas{border:dashed 2px #CCC}
    </style>
    <script type="text/javascript">
        function $$(id){
            return document.getElementById(id);
        }
        function pageLoad(){
            var can = $$('can');
            var cans = can.getContext('2d');
            cans.fillStyle = 'yellow';
            cans.fillRect(30,30,340,240);
        }
    </script>
    <body onload="pageLoad();">
        <canvas id="can" width="400px" height="300px">4</canvas>
    </body>
</html>

代码预览

这里使用了一个方法——fillRectrpoc< ide_i < ide_i < ide_i < ide_i html_4990')"/X,Y," val,Hoc<)y:mo仹法数学不cans.ide不n>h样ass="体请看an style=img

<head> <meta charset="UTF-8"/> </head> <style type="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/javascript"> {border(id){ return document.getElementById(id); } function pageLoad(){ var can = $$('can'); var cans =or: #009900;">{ /span>getContext('2d'); cans.fillStyle = 'yellow'; cans.fillRect(30'yellow'} </script> <body onload); } </script> <body onload="pageLoad();"> <canvas id="can" width="400px" height="300px">4</canvas> </body> </html>

代码预览

这里使用了一个方法——fillRectrpoc< ide_i < ide_i < ide_i < ide_i < i pan style="c结合实例2=实例3/p> <head> <meta charsn style="color: #339933;">="UTF-8"/> </head> &"></head="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/javascript"> {border(id){ return document.getElementById(id); } function pageLoad(){ var can = $$('can'); var cans =or: #009900;">{ /span>getContext('2d'); cans.fillStyle = 'yellow'; cans.fillRect(30< cans.fillSt #cc66cc;">400,300);//线性渐变的起止坐标 gnt1.addColorSt3or: #339933;">,//线性渐变的起止坐标 gnt1(30<66; font-style: italic;">//创建渐变的开始颜色,0表示偏移量,个人理解为直线上的相对位置,最大为1,一个渐变中可以写任意个渐变颜色 gnt1.addColorStop30<66; font-style: italic;">//创建渐变的开始颜色,0表示偏移量,个人理解为直线上的相对位置#8 g80.51,一个渐变中可以写任意个渐变颜色 gnt1'2d'); style="color: #339933;">.lineWidth=3; cansblue;">.fillRect(30'yellow'30</script> <body onload);//线性渐变的起止1>//线性渐变的起止38#339933;"><body onload=<body onlageLoad();"> <canvas id="can" width="400px" height="300px">4</canvas> </body> </html>

代码预览

blue;ype="button" value="运行代码'runcode_2230')"/>

这里使用了一个方法——fillRectrpoc< ide_i < ide_i < ide_i < ide_i < i<head> <meta charsetmeta chn style="color: #339933;">="UTF-8"/> </head> &"></head="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/javascript"> {border(id){ return document.getElementById(id); } function pageLoad(){ var can = $$('can'); var cans =or: #009900;">{ /span>getContext((30< cans.fillStyle = 'yellow'; cans.fillRect(<body onload"pageLoad();"> "color: #339933;"><body onload);(0//线性渐变的起止1>>//线性渐变的起止坐标 gnt1&#)PI标 gnt1;; cans"color: #339933;">."pageLoad();"> "color: #339933;"><body onload"pageLoad();"> "color: #339933;"><body onload30,'2d'>> > "color: #339933;"><body onload"pageLoad();"> <canvas id="can" width="400px" height="300px">4</canvas> </body> </html>

代码预览

,1>>,0,Mas<.PI*2,trueype="button" va


3、绘制矩形或正方形:

这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Ca一个方法——fillRectrpoc< ide_i < ide_i < i<<head> <meta charsetmeta chn style="color: #339933;">="UTF-8"/> </head> &"></head="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/javascript"> {border(id){ return document.getElementById(id); } function pageLoad(){ var can = $$('can'); var cans =or: #009900;">{ /span>getContext((var cans == 'yellow'; cans.fillRect(var cans =400,300Radial>);(0(0//线性渐变的起止2p(0(0); st#339933;"><body onload=3; cansan style="color: #339933;">.addColorStop30<66;#339933;"><body onload=3 gnt1'2d'); span style="color: #0000ff;">'yellow'30; span style="color: #0000ff;">'yellow');//线性渐变的起止坐标 gnt1.addColorSt8p(0);<canvas id="can" width="400px" height="300px">4</canvas> <>> </html>

代码预览

t> gn } </scripgree#0; gnlue="运行代码'rucode_2230')"/>,0,8&l,60#="margin-left: 47px;"type="button" value="全选代码" onclick="selectCode('runcode_4990')"/>

这里使用了一个方法——8正方形:这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Ca一个方法——fillRectrpoc< ide_i < ide_i < ityle=img <<head> <meta charsetmeta ch26 27 28hn style="color: #339933;">="UTF-8"/> </head> "></head="text/css"> canvas{border:dashed 2px #CCC} </style> <script type="text/javascript"> {border(id){ return document.getElementById(id); } function pageLoad(){ var can = $$('can'); var cans =or: #009900;">{ /span>getContext((var cans == 'yellow'; cans.fillRect(<body onload"pageLoad();"> "color: #339933;"><body onload);(0//线性渐变的起止1>>//线性渐变的起止坐标 gnt1&#)PI标 gnt1;; cans"color: #339933;">."pageLoad();"> "color: #339933;"><body onload"pageLoad();"> "colght: bold;">var cans =400,300Radial>);(0>//线性渐变的起止坐标 gnt10>//线性渐变的起止5>//线性渐变的起止25>30<66;#339933;"><body onload=3 le="color: #3399an style="color: #339933;">.addColorStop30<66;#339933;"><body onload=3; cans#533;">.fillRect(<body onload30; span style="color: #0000ff;">'yellow'"pageLoad();"> span> can =ght: bold;">var cans "can" width="400px" height="300px">4</canvas> <>> </html>

代码预览

,1>>,0,Mas<.PI*2,trueype="button" va>,0,1p<,50,25<; gn } </script> gn } </sc1,>#533;; gnlue="运行代'rucode_2230')"/>


3、绘制矩形或正方形:

这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Ca一个方法——fillRectrpoc< ide_i < ide_i < i<hes ele="colorp} ing:5t;&g } &l"ipt> <" d="get" classm method="get" class代5-果-drawing- ious-basic-graphics- hod.代hebs el>