createPattern(image, repetition)メソッドは、背景パターンとその繰り返し方法を指定する際に使用します。
引数imageは、背景パターンに使用するイメージデータを表します。
イメージデータとして利用できるのは、
<canvas>・
<img>・
<video>のいずれかで、
それ以外を指定するとエラー(TYPE_MISMATCH_ERR)となります。
また、背景パターンのイメージデータが存在しなかったり、利用できない場合にはエラー(INVALID_STATE_ERR)となります。
引数repetitionは、背景パターンの繰り返し方法を表します。
指定できる値は以下の4つで、指定を省略した場合の初期値は repeat です。
大文字と小文字が区別されるので、必ず小文字で指定してください。
以下の値以外を指定するとエラー(SYNTAX_ERR)となります。
背景パターンの開始位置は、canvas要素の左上端となります。
描画する図形の左上端ではない点に注意してください。
createPattern()メソッドを呼び出した後でイメージデータに変更を加えても、背景パターンは影響を受けません。
背景パターンが描画される際には、その時点で指定されている変形の影響を受けます。
背景パターンで塗りつぶした四角形を描画する場合は以下のような流れとなります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasで図形を描く</title>
<script type="text/javascript">
<!--
function test() {
//描画コンテキストの取得
var canvas = document.getElementById('sample');
if (canvas.getContext) {
var context = canvas.getContext('2d');
//ここに具体的な描画内容を指定する
//背景パターンとして使用するImageオブジェクトを生成する
var img = new Image();
//生成したImageオブジェクトに画像ファイルのパスを代入する
img.src = 'images/bg_check.gif';
//画像が読み込める場合には、背景パターン指定と図形描画を実行する
img.onload = function(){
//新しいパスを開始する
context.beginPath();
//背景画像とその繰り返し方法を指定する
var pattern = context.createPattern(img, 'repeat');
//上で指定した背景パターン内容を塗りつぶしスタイルに代入する
context.fillStyle = pattern;
//左から20上から20の位置に幅50高さ50の輪郭の四角形を作成する
context.rect(20,20,50,50);
//現在のパスを塗りつぶす
context.fill();
}
}
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
<p><img src="https://www.htmq.com/wp-content/themes/htmq/htmq-images/bg_check.gif">←背景パターンに使用した画像(30×30ピクセル)</p>
</body>
</html>
←背景パターンに使用した画像(30×30ピクセル)