七巧板長什麼樣子?
用canvas把他畫出來,其實就是把這7個區域的圖形,每個點的座標找出來,再用moveTo, lineTo連線,設定不同的顏色即可。
<head> <meta charset='utf-8' /> <style> #canvas { border: 1px dashed #aaa; } </style> <script> window.onload = function () { var oCanvas = document.querySelector("#canvas"), oGc = oCanvas.getContext('2d'), width = oCanvas.width, height = oCanvas.height, 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: "#a54c09" }, { p: [{ x: 200, y: 600 }, { x: 400, y: 800 }, { x: 0, y: 800 }], color: "#fa8ccc" }, { p: [{ x: 800, y: 400 }, { x: 800, y: 800 }, { x: 400, y: 800 }], color: "#f6ca29" } ]; for (var i = 0; i < tangram.length; i++) { draw( oGc, tangram[i]); }; function draw( cxt, piece ) { 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> </head> <body> <canvas id="canvas" width="800" height="800"></canvas> </body>
tangram儲存了每個形狀的頂點座標與填滿顏色,p就是每個區域的頂點組成的數組,數組中每個點都用一個json物件存儲.,一個有7個形狀,tangram就是7項,然後用循環,把每個區域的頂點和其他的點用線連起來。注意每個區域的點一定要用路徑,至於為什麼?可以參考我的這篇文章:[js高手之路] html5 canvas系列教學 - 開始路徑beginPath與關閉路徑closePath詳解
以上是用html5 canvas 繪製一個七巧板的詳細內容。更多資訊請關注PHP中文網其他相關文章!