CanvasRenderingContext2D.lineCap

Canvas 2D APIのCanvasRenderingContext2D.lineCap プロパティは、描線の端点の形状を設定します。

Note: 描線は stroke()、 strokeRect()、 strokeText() のメソッドで行われます。

Syntax

ctx.lineCap = "butt" || "round" || "square";

Options

"butt"
端点は四角く切られます。デフォルト値です。
"round"
端点は丸くなります。
"square"
端点に線幅と同じ幅で高さが半分の四角形が描き加えられます。

Examples

線の先端の形を変える

この例では直線の端点を丸めています。

HTML

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

JavaScript

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();

Result

先端形状の比較

次の例では、lineCap プロパティがそれぞれ異なる3本の線を描画しています。その違いを観察するために、2本の補助線を引いています。3本の線はそれぞれこの補助線直上を始点および終点として描かれています。

左の線はデフォルトのオプション "butt" の場合の描線で、補助線のところで丁度切れています。2つ目の"round" オプションの場合の線は、補助線の部分の先に半円が追加された格好になっています。右側の"square" オプションによる描線は、線の幅と同じ幅で高さが半分の四角形が追加されています。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const lineCap = ['butt', 'round', 'square'];

// Draw guides
ctx.strokeStyle = '#09f';
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';
for (let i = 0; i < lineCap.length; i++) {
  ctx.lineWidth = 15;
  ctx.lineCap = lineCap[i];
  ctx.beginPath();
  ctx.moveTo(25 + i * 50, 10);
  ctx.lineTo(25 + i * 50, 140);
  ctx.stroke();
}
ScreenshotLive sample

Specifications

Specification Status Comment
HTML Living Standard
CanvasRenderingContext2D.lineCap の定義
現行の標準

Browser compatibility

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
lineCapChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 1.5IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
  • In WebKit- and Blink-based Browsers, a non-standard and deprecated method ctx.setLineCap() is implemented in addition to this property.

See also