【JavaScript入門】矩形の描画

 矩形(長方形)は Canvas で最も頻繁に描かれる図形です。Canvas には “パスを組み立てて fill / stroke する” という原則がありますが、矩形だけは ショートカットメソッド が用意されており、1 行で塗りつぶし・枠線・消去を行えます。ここではそれら 3 メソッドの利用法と、背景全体の塗り替えや部分消去の実例を通して、矩形描画の基礎を学びます。

1.矩形専用メソッドの概要

メソッド役割主な引数
fillRect(x, y, w, h)指定領域を 塗りつぶす左上 x, y / 幅 w / 高さ h
strokeRect(x, y, w, h)指定領域に 枠線を描く同上
clearRect(x, y, w, h)指定領域を 透明に戻す同上

1.1. 画面全体の塗りつぶし

ctx.fillStyle = '#faf7ef';
ctx.fillRect(0, 0, canvas.width, canvas.height);

背景色を一括で変更したいときに便利です。

1.2. アニメーション時の消去

ctx.clearRect(0, 0, canvas.width, canvas.height);

前フレームの残像を消してから次のフレームを描く典型パターンです。

2.サンプルプログラム

ファイル名: boxes_demo.html

PNGファイルのダウンロードは、ここ「checker.png」からできます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>🖼️ Canvas Rectangle Demo</title>
<style>
  body   {font-family:"Segoe UI",sans-serif;background:#eef4ff;text-align:center;margin:2rem}
  h1     {font-size:1.8rem;margin-bottom:1rem}
  canvas {border:1px solid #777;border-radius:6px;background:url(./checker.png)}
  #info  {margin-top:.8rem;color:#00695c;font-weight:bold}
</style>
</head>
<body>
  <h1>🖼️ 矩形の描画デモ</h1>
  <canvas id="board" width="420" height="260"></canvas>
  <p id="info">キャンバスに矩形を描きました!</p>

<script>
(() => {
  const cvs = document.getElementById('board');
  const ctx = cvs.getContext('2d');

  /* 背景を淡いグリーンで塗りつぶし */
  ctx.fillStyle = '#d9fdd3';
  ctx.fillRect(0, 0, cvs.width, cvs.height);

  /* 塗りつぶし矩形 */
  ctx.fillStyle = '#6c8cff';   // 青紫
  ctx.fillRect(40, 40, 340, 180);

  /* 線矩形(枠線は中心線が基準) */
  ctx.strokeStyle = 'rgba(255,60,60,0.7)';
  ctx.lineWidth   = 20;
  ctx.strokeRect(40, 40, 340, 180);

  /* 一部を消去してチェック模様を再表示 */
  ctx.clearRect(100, 90, 200, 90);
})();
</script>
</body>
</html>

ブラウザの出力例

  1. 全体が淡いグリーンで塗りつぶされる。
  2. その上に青紫の矩形が描かれる。
  3. 赤みを帯びた半透明の太い枠線が矩形を囲む。
  4. 中央部 (横 200 × 縦 90 px) が透明に戻り、背景の市松模様がのぞく。
  5. 下に 「キャンバスに矩形を描きました!」 と日本語の説明。

プログラム解説 (抜粋)

内容ポイント
11background:url(./checker.png)透明領域が確認しやすいよう市松模様を設定
25ctx.fillStyle = '#d9fdd3'fillStyle は直前の fillRect だけに作用し、次の描画には引き継がれる
31ctx.lineWidth = 20strokeRect の線幅はパス中央基準なので外側へ 10 px、内側へ 10 px 広がる
34ctx.clearRect(...)消去後は完全な透明ピクセルになるため、canvas 背景 (checker.png) が見える

まとめ

  • fillRectstrokeRectclearRect の 3 メソッドで矩形操作は完結。
  • 背景塗りつぶしや領域消去は「全キャンバスサイズ」を引数に渡すと一発。
  • 枠線を太くする場合は “線幅は中心線基準” を意識して座標やサイズを調整する。
    これらをマスターすれば、ダッシュボードのパネル描画やゲームのヒットボックス表現など、実用的な UI パーツを簡潔なコードで実装できます。