首页 > Web开发 > 详细

[学习笔记]HTML5之canvas

时间:2016-04-02 20:15:50      阅读:342      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!