JavaScriptでCanvasに線を描画する際に、stroke()メソッドの使い方でエラーが発生する場合があります。この記事では、stroke()メソッドの正しい使い方と一般的なエラーの解決方法について解説します。
stroke()メソッドの基本的な使い方
stroke()メソッドは、Canvas上で定義したパスに沿って線を描画するために使用します。以下が基本的な使用例です:
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.beginPath(); // パスの開始
ctx.moveTo(50, 50); // 開始点の設定
ctx.lineTo(200, 50); // 終点の設定
ctx.stroke(); // 線の描画よくあるエラーと解決方法
1. 線が表示されない
最も多いエラーは線が表示されない問題です。主な原因と解決方法は以下の通りです:
- 原因1: beginPath()の忘れ
// ❌ 間違った例
ctx.moveTo(50, 50);
ctx.lineTo(200, 50);
ctx.stroke();
// ✅ 正しい例
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 50);
ctx.stroke();- 原因2: Canvasのサイズ設定ミス
// ✅ Canvasのサイズを正しく設定
canvas.width = 500;
canvas.height = 300;2. 線のスタイル設定
線の色や太さが期待通りでない場合は、以下のプロパティを使用して設定します:
ctx.strokeStyle = '#000000'; // 線の色を設定
ctx.lineWidth = 2; // 線の太さを設定(ピクセル単位)
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 50);
ctx.stroke();3. 複数の線を描画する
複数の線を描画する際は、それぞれの線でbeginPath()を呼び出す必要があります:
// 1本目の線
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 50);
ctx.stroke();
// 2本目の線
ctx.beginPath();
ctx.moveTo(50, 100);
ctx.lineTo(200, 100);
ctx.stroke();stroke()メソッドの応用例
破線の描画
setLineDash()メソッドを使用して破線を描画できます:
ctx.setLineDash([5, 5]); // 破線のパターンを設定
ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(200, 50);
ctx.stroke();線の角の形状設定
lineJoinプロパティを使用して線の接続部分の形状を設定できます:
ctx.lineJoin = 'round'; // 'round', 'bevel', 'miter'から選択まとめ
stroke()メソッドを使用する際は以下の点に注意しましょう:
- 必ずbeginPath()でパスを開始する
- 適切なCanvasサイズを設定する
- 線のスタイル(色、太さ)は描画前に設定する
- 複数の線を描画する場合は、それぞれでbeginPath()を呼び出す
これらの基本を押さえることで、多くのエラーを防ぐことができます。