Canvas API

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

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

document.createElement() メソッドを使用して新しい <canvas> 要素を作成し、その要素を既存の 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> タグ