beginPath(路徑命令)
context.beginPath()
開始組裝一組新的路徑命令,並丟棄任何先前組裝的路徑。
它還將繪圖筆移動到畫布的左上角原點(== coordinate [0,0])。
雖然是可選的,但你應該始終使用 beginPath
啟動路徑
丟棄是一個重要且經常被忽視的問題。如果未使用 beginPath
開始新路徑,則將自動重繪以前發出的任何路徑命令。
這兩個演示都嘗試用一個紅色筆劃和一個藍色筆劃繪製 X
。
第一個演示正確使用 beginPath
開始它的第二個紅色筆畫。結果是 X
正確地具有紅色和藍色筆劃。
<!doctype html>
<html>
<head>
<style>
body{ background-color:white; }
#canvas{border:1px solid red; }
</style>
<script>
window.onload=(function(){
// get a reference to the canvas element and it's context
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
// draw a blue line
ctx.beginPath();
ctx.moveTo(30,30);
ctx.lineTo(100,100);
ctx.strokeStyle='blue';
ctx.lineWidth=3;
ctx.stroke();
// draw a red line
ctx.beginPath(); // Important to begin a new path!
ctx.moveTo(100,30);
ctx.lineTo(30,100);
ctx.strokeStyle='red';
ctx.lineWidth=3;
ctx.stroke();
}); // end window.onload
</script>
</head>
<body>
<canvas id="canvas" width=200 height=150></canvas>
</body>
</html>
第二次演示錯誤地在第二次擊球時遺漏了 beginPath
。結果是 X
錯誤地具有兩個紅色筆劃。
第二個 stroke()
繪製第二個紅色筆劃。
但是沒有第二個 beginPath
,同樣的第二個 stroke()
也錯誤地重繪了第一個筆劃。
由於第二個 stroke()
現在被設定為紅色,因此第一個藍色筆劃被錯誤著色的紅色筆劃覆蓋。
<!doctype html>
<html>
<head>
<style>
body{ background-color:white; }
#canvas{border:1px solid red; }
</style>
<script>
window.onload=(function(){
// get a reference to the canvas element and it's context
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
// draw a blue line
ctx.beginPath();
ctx.moveTo(30,30);
ctx.lineTo(100,100);
ctx.strokeStyle='blue';
ctx.lineWidth=3;
ctx.stroke();
// draw a red line
// Note: The necessary 'beginPath' is missing!
ctx.moveTo(100,30);
ctx.lineTo(30,100);
ctx.strokeStyle='red';
ctx.lineWidth=3;
ctx.stroke();
}); // end window.onload
</script>
</head>
<body>
<canvas id="canvas" width=200 height=150></canvas>
</body>
</html>