canvas内に画像を並べて表示する方法について解説

HOME
更新日:2017.03.02
HOMEJavaScript入門(HTML5編) > 画像を並べる

画像を並べる-JavaScript入門(HTML5編)

このページでは、canvas上に画像を並べて描画する方法について解説します。

画像を並べる命令文

画像を並べるパターンを作成するには、createPattern()を使います。 作成されたパターンを、fillSyleに設定して使います。

context.createPattern(画像,並べ方)
画像を並べ、パターンを生成します。並べ方は以下の4つがあります。
repeat 画像を縦横に敷き詰めます。
repeat-x 画像を横方向に並べます。
repeat-y 画像を縦方向に並べます。
no-repeat 画像を一つだけ表示します。

画像の並べ方を指定する値はCSSの背景画像と同じなので、覚えやすいと思います。

画像を並べるサンプル

以下のスクリプトでは、canvasに画像を並べて表示させます。 4通りの並べ方をそれぞれ確認できます。 画像はヘッダーでプレロードしておくとよいでしょう。

<head>
<script>
//ヘッダーで画像をプレロードする
var img = new Image();
img.src = "img/back.png";
</script>
</head>

<canvas id="cv1" width="360" height="240"></canvas>
<script>
var ctx = document.getElementById("cv1").getContext("2d");

//4通りの並べ方を配列ptnに格納する
var ptn = new Array("repeat","repeat-x","repeat-y","no-repeat");

//画像の並べ方を指定してcanvas内に描画する関数
function img_p( num )
{
  ctx.clearRect(0,0,360,240);  //まず、前の画像を削除する
  
  //引数から、画像の並べ方を指定
  num = parseInt( num );
  var cpt = ctx.createPattern( img , ptn[num] );

  ctx.fillStyle = cpt;         //画像パターンをfillSylteに指定
  ctx.fillRect(0,0,360,240);
}
</script>

<form>
<input type="button" value="repeat" onclick="img_p(0)">
<input type="button" value="repeat-x" onclick="img_p(1)">
<input type="button" value="repeat-y" onclick="img_p(2)">
<input type="button" value="no-repeat" onclick="img_p(3)">
</form>

<描画結果>canvasタグにはCSSで二重線の枠を付けています

CSSの背景画像の設定と同じようになっているのが判ると思います。