CanvasRenderingContext2D.setLineDash()

この記事は翻訳が完了していません。 この記事の翻訳にご協力ください

Canvas 2D APIのCanvasRenderingContext2DインターフェイスのsetLineDash()メソッドは、線を描画するときに使用される線の模様を設定します。 これは描画する線とその隙間の長さの値を交互に指定する配列を使用します。

注: 線の模様を実線に戻す場合には、指定する配列の中身を空にします。

文法

ctx.setLineDash(segments);

引数

segments
描画する線の長さとその隙間の数値を交互に指定する配列(Array) (座標空間単位)。配列内の要素数が奇数の場合、配列の要素がコピーされて連結されます。 例えば、[5, 15, 25][5, 15, 25, 5, 15, 25]になります。 配列が空の場合、ラインダッシュリストはリセットされ、描画される線は実線に戻ります。

簡単な例

この例では、setLineDash()メソッドを使用して、実線の上に破線を描画します。

HTML

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

JavaScript

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

// Dashed line
ctx.beginPath();
ctx.setLineDash([5, 15]);
ctx.moveTo(0, 50);
ctx.lineTo(300, 50);
ctx.stroke();

// Solid line
ctx.beginPath();
ctx.setLineDash([]);
ctx.moveTo(0, 100);
ctx.lineTo(300, 100);
ctx.stroke();

実行結果

いくつかの一般的な模様

この例は、さまざまな一般的な破線のパターンを示しています。

HTML

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

JavaScript

下記のdrawDashedLine()関数を使用すると、複数の破線を簡単に描画できます。引数としてパターン配列を受け取ります。

function drawDashedLine(pattern) {
  ctx.beginPath();
  ctx.setLineDash(pattern);
  ctx.moveTo(0, y);
  ctx.lineTo(300, y);
  ctx.stroke();
  y += 20;
}

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let y = 15;

drawDashedLine([]);
drawDashedLine([1, 1]);
drawDashedLine([10, 10]);
drawDashedLine([20, 5]);
drawDashedLine([15, 3, 3, 3]);
drawDashedLine([20, 3, 3, 3, 3, 3, 3, 3]);
drawDashedLine([12, 3, 3]);  // [12, 3, 3, 12, 3, 3]と同じ

実行結果

仕様

仕様 策定状況 コメント
HTML Living Standard
CanvasRenderingContext2D.setLineDash の定義
現行の標準

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
setLineDashChrome 完全対応 23Edge 完全対応 12Firefox 完全対応 27IE 完全対応 11Opera 完全対応 15Safari 完全対応 6.1WebView Android 完全対応 ≤37Chrome Android 完全対応 25Firefox Android 完全対応 27Opera Android 完全対応 14Safari iOS 完全対応 7Samsung Internet Android 完全対応 1.5

凡例

完全対応  
完全対応

関連情報