HTML DOM Canvas オブジェクト

<canvas>要素はHTMLページ内のビットマップエリアを定義します。

Canvas APIは、JavaScriptがキャンバス上にグラフィックを描画できるようにします。

Canvas APIは、形状、線、曲線、ボックス、テキスト、画像、色、回転、透明度、およびその他のピクセル操作を描画できます。

CanvasをHTMLに追加する

HTMLページのどこにでも<canvas>タグを使用してcanvas要素を追加できます:

<canvas id="myCanvas" width="300" height="150"></canvas>

自分で試してみてください

Canvas要素にアクセスする方法

HTML DOM メソッドgetElementById()を使用して<canvas>要素にアクセスできます:

const myCanvas = document.getElementById("myCanvas");

キャンバス上に描画するには、2D 上下文オブジェクトを作成する必要があります:

const ctx = myCanvas.getContext("2d");

ノート

HTML <canvas> 要素自体には描画機能がありません。

どの種類のグラフィックを描画するかは、JavaScriptを使用する必要があります。

getContext() メソッドは、描画ツール(メソッド)を持つオブジェクトを返します。

キャンバス上に描画する方法

2D 上下文オブジェクトを作成した後、キャンバス上に描画することができます。

以下の fillRect() メソッドは、左上角が 20,20 位置にある、幅 150ピクセル、高さ 100ピクセルの黒い矩形を描画します:

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillRect(20, 20, 150, 100);

自分で試してみてください

色を使用して

fillStyle 属性は、描画オブジェクトの塗りつぶし色を設定します:

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

自分で試してみてください

新しい <canvas> 要素を document.createElement() メソッドを使用して作成し、その要素を現在の HTML ページに追加することができます:

const myCanvas = document.createElement("canvas");
document.body.appendChild(myCanvas);
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

自分で試してみてください

パス

キャンバス上に描画する一般的な方法は:

  1. パスを開始 - beginPath()
  2. ポイントに移動 - moveTo()
  3. パス内に描画 - lineTo()
  4. パスを描画 - stroke()

const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(20, 100);
ctx.lineTo(70, 100);
ctx.stroke();

自分で試してみてください

色、スタイルと影

属性 説明
fillStyle 塗りつぶしの色、グラデーションまたはパターンを設定または返します。
strokeStyle 線の色、グラデーションまたはパターンを設定または返します。
shadowColor 影の色を設定または返します。
shadowBlur 影のぼやけレベルを設定または返します。
shadowOffsetX 影を形状に向ける水平距離を設定または返します。
shadowOffsetY 影を形状に向ける垂直距離を設定または返します。
メソッド 説明
createLinearGradient() 線形グラデーションを作成します(キャンバスの内容用)。
createPattern() 指定された方向で指定された要素を繰り返します。
createRadialGradient() 放射状/円形グラデーションを作成します(キャンバスの内容用)。
addColorStop() グラデーションオブジェクト内の色と停止位置を指定します。

ラインスタイル

属性 説明
lineCap 線のエンドキャップのスタイルを設定または返します。
lineJoin 2つの線が交差する場合に作成される角のタイプを設定または返します。
lineWidth 現在の線幅を設定または返します。
miterLimit 最大の斜接長さを設定または返します。

矩形

メソッド 説明
rect() 矩形を作成します。
fillRect() 塗りつぶした矩形を描画します。
strokeRect() 塗りつぶしない矩形を描画します。
clearRect() 指定された矩形内の指定されたピクセルをクリアします。

パス

メソッド 説明
fill() 現在の図形(パス)を塗りつぶします。
stroke() 定義したパスを実際に描画します。
beginPath() パスを開始するか、現在のパスをリセットします。
moveTo() パスをキャンバスの指定されたポイントに移動しますが、線を作成しません。
closePath() 現在のポイントから起点へのパスを作成します。
lineTo() 新しいポイントを追加し、キャンバスの最後の指定されたポイントからそのポイントまでの線を作成します。
clip() 元のキャンバスから任意の形状とサイズの領域をカットアウトします。
quadraticCurveTo() 二次ベ塞尔曲線を作成します。
bezierCurveTo() 三次ベ塞尔曲線を作成します。
arc() 円弧/曲線を作成します(円または円の一部を作成するために使用)。
arcTo() 2つの切線の間に円弧/曲線を作成します。
isPointInPath() 指定されたポイントが現在のパスの中にある場合、true を返し、そうでない場合は false を返します。

変換

メソッド 説明
scale() 現在の図形を拡大または縮小します。
rotate() 現在の図形を回転します。
translate() キャンバス上の (0,0) 位置を再マッピングします。
transform() 現在の描画の変換行列を置き換えます。
setTransform() 現在の変換をユニット行列にリセットします。次に実行します。 transform()

テキスト

属性 説明
font テキストの現在のフォント属性を設定または返します。
textAlign テキストの現在のアライメント方式を設定または返します。
textBaseline テキストを描画する際に使用する現在のテキストベースラインを設定または返します。
メソッド 説明
fillText() キャンバス上に「塗りつぶし」テキストを描画します。
strokeText() キャンバス上にテキスト(塗りつぶしなし)を描画します。
measureText() 指定されたテキストの幅を含むオブジェクトを返します。

画像描画

メソッド 説明
drawImage() キャンバス上に画像、キャンバス、またはビデオを描画します。

ピクセル操作

属性 説明
width ImageData オブジェクトの幅を返します。
height ImageData オブジェクトの高さを返します。
data 指定された ImageData オブジェクトの画像データを含むオブジェクトを返します。
メソッド 説明
createImageData() 新しい空白の ImageData オブジェクトを作成します。
getImageData() 指定されたキャンバスの指定された矩形のピクセルデータをコピーする ImageData オブジェクトを返します。
putImageData() 指定された ImageData オブジェクトからの画像データをキャンバスに戻します。

合成

属性 説明
globalAlpha 描画の現在のアルファ値または透明度を設定または返します。
globalCompositeOperation 新しい画像を既存の画像にどのように描画するかを設定または返します。

その他

メソッド 説明
save() 現在のコンテキストの状態を保存します。
restore() 前に保存されたパスの状態と属性を返します。
createEvent()
getContext()
toDataURL()

標準属性とイベント

canvas オブジェクトは標準属性およびイベント

関連ページ

HTML 教程:HTML5 キャンバス

HTML イメージ教程:HTML Canvas 教程

HTML 参考マニュアル:HTML <canvas> タグ