为了账号安全,请及时绑定邮箱和手机立即绑定

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

<!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 回答

哦哦,我试试,谢谢啦

0 回复 有任何疑惑可以回复我~

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();

    }

这样就可以了


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

还是不行哎


0 回复 有任何疑惑可以回复我~
#1

qq_慕码人3188746

不可能啊 我用你的代码 把{}去掉就好了啊 for (var i = 1; i < place.p.length; i++) cxt.lineTo(place.p[i].x, place.p[i].y);
2021-01-26 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~
#1

蒹葭苍沧 提问者

谢谢呀,我试试
2021-01-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信