CanvasRenderingContext2D: createPattern() メソッド
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
CanvasRenderingContext2D.createPattern() はキャンバス 2D API のメソッドで、指定された画像と繰り返しを使ってパターンを作成します。
このメソッドは CanvasPattern を返します。
このメソッドはキャンバスに直接には何も描画しません。
作成したパターンは、その後の描画で適用するために CanvasRenderingContext2D.fillStyle または CanvasRenderingContext2D.strokeStyle プロパティに代入する必要があります。
構文
createPattern(image, repetition)
引数
image-
パターンの画像として使用する画像。 以下のいずれかになります。
HTMLImageElement(<img>)SVGImageElement(<image>)HTMLVideoElement(動画のキャプチャに使用する<video>)HTMLCanvasElement(<canvas>)ImageBitmapOffscreenCanvasVideoFrame
repetition-
文字列で、パターンの画像の反復方法を示します。 取りうる値は次の通りです。
"repeat"(水平・垂直方向両方)"repeat-x"(水平方向のみ)"repeat-y"(垂直方向のみ)"no-repeat"(反復なし)
repetitionが空文字列 ("") やnull(ただしundefinedではないもの)で指定されると、"repeat"の値が使用されます。
返値
CanvasPattern-
パターンを示す不透過なオブジェクトです。
image が完全に読み込まれていない場合((HTMLImageElement.complete が false の場合)は null が返却されます。
例
>画像からパターンを作成
この例では createPattern() メソッドを使用して、反復元画像を持つ CanvasPattern を作成します。
作成されたパターンはキャンバスコンテキストの塗りつぶしスタイルに割り当てられ、矩形に適用されます。
元画像はこのようになります。

HTML
<canvas id="canvas" width="300" height="300"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const img = new Image();
img.src = "canvas_createpattern.png";
// Only use the image after it's loaded
img.onload = () => {
const pattern = ctx.createPattern(img, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, 300, 300);
};
キャンバスからパターンを作成
この例では、画面外のキャンバスの内容からパターンを作成します。 次に、このパターンをプライマリーキャンバスの塗りつぶしスタイルに適用し、そのキャンバスをパターンで塗りつぶします。
JavaScript
// パターンとオフスクリーンキャンバスを作成
const patternCanvas = document.createElement("canvas");
const patternContext = patternCanvas.getContext("2d");
// パターンの幅と高さを 50 にする
patternCanvas.width = 50;
patternCanvas.height = 50;
// パターンに背景色を設定し、弧を描く
patternContext.fillStyle = "#fec";
patternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);
patternContext.arc(0, 0, 50, 0, 0.5 * Math.PI);
patternContext.stroke();
// プライマリーキャンバスを作成し、パターンで塗りつぶす
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
const pattern = ctx.createPattern(patternCanvas, "repeat");
ctx.fillStyle = pattern;
ctx.fillRect(0, 0, canvas.width, canvas.height);
// プライマリーキャンバスをウェブページへ追加
document.body.appendChild(canvas);
結果
仕様書
| 仕様書 |
|---|
| HTML> # dom-context-2d-createpattern-dev> |
ブラウザーの互換性
関連情報
- このメソッドを定義しているインターフェイス:
CanvasRenderingContext2D CanvasPattern