CanvasRenderingContext2D: closePath() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

Canvas 2D API 的 CanvasRenderingContext2D.closePath() 方法嘗試從當前點新增一條直線到當前子路徑的起點。如果形狀已經被關閉或只有一個點,則此函式不執行任何操作。

此方法不會直接在畫布上繪製任何內容。您可以使用 stroke()fill() 方法來渲染路徑。

語法

js
closePath()

引數

無。

返回值

無(undefined)。

示例

關閉一個三角形

此示例使用 lineTo() 方法建立三角形的前兩個(對角線)邊。之後,使用 closePath() 方法建立三角形的底邊,該方法會自動連線形狀的第一個點和最後一個點。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

三角形的頂點位於 (20, 140)、(120, 10) 和 (220, 140)。

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.moveTo(20, 140); // Move pen to bottom-left corner
ctx.lineTo(120, 10); // Line to top corner
ctx.lineTo(220, 140); // Line to bottom-right corner
ctx.closePath(); // Line to bottom-left corner
ctx.stroke();

結果

只關閉一個子路徑

此示例繪製了一個由三個不相連的子路徑組成的笑臉。

注意: 儘管在建立所有弧之後呼叫了 closePath(),但只有最後一個弧(子路徑)會被關閉。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

前兩個弧建立了臉的眼睛。最後一個弧建立了嘴巴。

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.arc(240, 20, 40, 0, Math.PI);
ctx.moveTo(100, 20);
ctx.arc(60, 20, 40, 0, Math.PI);
ctx.moveTo(215, 80);
ctx.arc(150, 80, 65, 0, Math.PI);
ctx.closePath();
ctx.lineWidth = 6;
ctx.stroke();

結果

規範

規範
HTML
# dom-context-2d-closepath-dev

瀏覽器相容性

另見