图形一样,但就是没有颜色,求大神指点

来源:2-2 绘制直线、多边形和七巧板

蒹葭苍沧

2021-01-22 11:31

<!DOCTYPE html><html lang='zh-cn'>    <head>        <title>tangram</title>        <meta charset="utf-8">        <style type="text/css">        </style>    </head>    <body>        <canvas id="canvas" style="border: 1px solid #aaa;display: block;margin: 30px auto;"></canvas>        <script type="text/javascript">            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}],color:'#67becf'},                {p:[{x:800,y:0},{x:800,y:400},{x:600,y:600},{x:600,y:200}],color:'ef3d6q'},                {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:"#fa83cc"},                {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:"#f6ca29"},            ];            window.onload=function(){                var canvas=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(place,cxt){                    cxt.beginPath();                    cxt.moveTo(place.p[0].x,place.p[0].y);                    for(var i=1;i<place.p.length;i++){                        cxt.lineTo(place.p[i].x,place.p[i].y);                    cxt.closePath();                    cxt.fillStyle=place.color;                    cxt.fill();                    cxt.strokeStyle='#000';                    cxt.lineWidth=3;                    cxt.stroke();                    }                }            }           </script>    </body></html>


写回答 关注

5回答

  • 蒹葭苍沧
    2021-02-25 16:15:22

    哦哦,我试试,谢谢啦

  • weixin_慕侠1190673
    2021-02-23 09:13:34

    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}],color:'#67becf'},

            {p:[{x:800,y:0},{x:800,y:400},{x:600,y:600},{x:600,y:200}],color:'ef3d6q'},

            {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:"#fa83cc"},

            {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:"#f6ca29"},

        ];

        window.onload=function(){

            var canvas=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(place,cxt){

            cxt.beginPath();

            cxt.moveTo(place.p[0].x,place.p[0].y);

            for(var i=1;i<place.p.length;i++){

                cxt.lineTo(place.p[i].x,place.p[i].y);

            }

            cxt.fillStyle=place.color;

            cxt.closePath();

            cxt.fill();

            cxt.strokeStyle='#000';

            cxt.lineWidth=3;

            cxt.stroke();

        }

    这样就可以了


  • 蒹葭苍沧
    2021-01-27 08:53:17

    可以了,一般for循环有{}呀,为啥这里加上{}就不行了,也没多写啊

  • 蒹葭苍沧
    2021-01-25 16:59:18

    还是不行哎


    qq_慕码人...

    不可能啊 我用你的代码 把{}去掉就好了啊 for (var i = 1; i < place.p.length; i++) cxt.lineTo(place.p[i].x, place.p[i].y);

    2021-01-26 20:36:09

    共 1 条回复 >

  • qq_慕码人3188746
    2021-01-23 16:44:31

    把你函数draw()里面的for下面的{}删了,不带{}只执行cxt.lineTo(place.p[i].x,place.p[i].y);

    蒹葭苍沧

    谢谢呀,我试试

    2021-01-23 17:34:43

    共 1 条回复 >

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题