CanvasRenderingContext2D: lineCap 屬性

Baseline 已廣泛支援

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

Canvas 2D API 的 CanvasRenderingContext2D.lineCap 屬性決定了繪製線條端點的形狀。

注意: 可以使用 stroke()strokeRect()strokeText() 方法繪製線條。

以下之一:

"butt"

線條的端點處是方形的。預設值。

"round"

線條的端點是圓形的。

"square"

線條的端點透過新增一個寬度等於線條粗細、高度為其一半的方框來使其方正。

示例

更改線帽的形狀

此示例將直線端點的形狀設定為圓形。

HTML

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

JavaScript

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

ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineWidth = 15;
ctx.lineCap = "round";
ctx.lineTo(100, 100);
ctx.stroke();

結果

線帽比較

在此示例中,繪製了三條線,每條線都使用了不同的 lineCap 屬性值。添加了兩條輔助線,以清晰顯示三者之間的確切差異。每條線都精確地開始和結束於這些輔助線上。

最左邊的線使用了預設的 "butt" 選項。它完全與輔助線齊平。第二條線設定為使用 "round" 選項。這會在端點處新增一個半圓,其半徑等於線寬的一半。最右邊的線使用了 "square" 選項。這會新增一個寬度等於線粗細、高度為其一半的方框。

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

// Draw guides
ctx.strokeStyle = "#0099ff";
ctx.beginPath();
ctx.moveTo(10, 10);
ctx.lineTo(140, 10);
ctx.moveTo(10, 140);
ctx.lineTo(140, 140);
ctx.stroke();

// Draw lines
ctx.strokeStyle = "black";
["butt", "round", "square"].forEach((lineCap, i) => {
  ctx.lineWidth = 15;
  ctx.lineCap = lineCap;
  ctx.beginPath();
  ctx.moveTo(25 + i * 50, 10);
  ctx.lineTo(25 + i * 50, 140);
  ctx.stroke();
});

規範

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

瀏覽器相容性

  • 在基於 WebKit 和 Blink 的瀏覽器中,除了此屬性外,還實現了一個非標準的、已棄用的方法 ctx.setLineCap()

另見