码迷,mamicode.com
首页 > Web开发 > 详细

[学习笔记]HTML5之canvas

时间:2016-04-02 20:16:53      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:

虐了一下午的canvas

先撸了一个七巧板

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<canvas id="canvas"  style="border:1px solid #ccc; display:block; margin:50px auto;">
</canvas>

<script>
    var tangram=[
        {p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:#caff67},
        {p:[{x:0,y:0},{x:400,y:400},{x:0,y:800},{x:0,y:0}],color:#67becf},
        {p:[{x:800,y:0},{x:800,y:400},{x:600,y:600},{x:600,y:200}],color:#ef3d61},
        {p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:#f9f51a},
        {p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:#a594c0},
        {p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:#fa8ecc},
        {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:#f6ca29},
    ]
window.onload=function() {
    var canavs=document.getElementById(canvas);

    canvas.width=800;
    canvas.height=800;

    var context=canvas.getContext(2d);
    for(var i=0;i<tangram.length;i++)
    draw(tangram[i],context)


}
    function draw(piece,cxt){

        cxt.beginPath();
        cxt.moveTo(piece.p[0].x,piece.p[0].y);
        for(var i=1;i<piece.p.length;i++)
            cxt.lineTo(piece.p[i].x,piece.p[i].y);
        cxt.closePath();

        cxt.fillStyle=piece.color;
        cxt.fill();
    }
</script>

</body>
</html>

技术分享

知道了canvas绘图其实是在canvas.getContext(‘2d‘)环境里进行的,要先声明之。

绘图分两个步骤,首先描绘路径轨迹,然后渲染填充。

在页面中存在绘制多个图形的情况下,避免各个路径之间互相干扰,要把每段完整的路径用beginPath()和closePath()包围起来保证代码的完整性。

值得一提的是在路径末端加了closePath()后,绘制的路径会自动收尾封闭,即如果绘制了三角形的两条边,那么closePath()会自动补全第三条边使图形成为封闭的三角形。

其中绘制圆形路径用arc(x,y,r,0,2*Math.PI,true),其中xy为圆心坐标,r为半径,0为起点,2*Math.PI为终点,true为逆时针方向绘制该圆

圆形解剖:

技术分享

将路径变成线条使用stroke(),用lineWidth属性设置线条的粗细,用strokeStyle设置颜色;

填充路径用fill(),用fillStyle设置填充色。

 

吃饭,未完待续。。。

 

[学习笔记]HTML5之canvas

标签:

原文地址:http://www.cnblogs.com/buwan/p/5348056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!