canvas繪制七巧板

在上一節(jié)中,我們了解了如何使用canvas繪制線段,這一節(jié),我們使用canvas繪制七巧板。
html代碼如下所示,和第一節(jié)中代碼一致:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Canvas繪制七巧板</title>
</head>
<body>
<style>
    #canvas{
        border: 1px solid #aaa;
        text-align: center;
    }
</style>
<canvas id="canvas" width="800" height="800">
    當(dāng)用戶瀏覽器不支持Canvas,請(qǐng)更換瀏覽器重試!
</canvas>
</body>
</html>

直接上代碼,js代碼如下所示:

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: "#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"}
];//七巧板的七塊圖形,p為各頂點(diǎn)坐標(biāo),color為顏色
window.onload = function () {
    var canvas = document.getElementById("canvas");
    if (canvas.getContext("2d")) {//判斷瀏覽器是否支持canvas
        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();

            cxt.strokeStyle = "black";
            cxt.lineWidth = 5;
            cxt.stroke();
        }

    } else {
        alert("不支持canvas,請(qǐng)更換瀏覽器!")
    }

};

最終效果如下所示:

七巧板

下一節(jié),我們學(xué)習(xí)如何使用canvas繪制弧線和圓

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容