HTML Canvasの描画内容を別のHTML Canvasに描画する

HTML Canvasの描画内容を別のHTML Canvasに描画するコードを紹介します。

概要

こちらの記事ではHTML Canvasをメモリ上に作成するコードを紹介しました。 メモリ上のHTML Canvasの利用例の一つとして、メモリ内で描画した結果を画面に転送するコードの例を紹介します。

プログラム

コード

下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
	<meta charset="utf-8" />
  <script type="text/javascript">
    var mem_canvas;

    function createCanvas() {
      mem_canvas = document.createElement("canvas");
      mem_canvas.width = 64;
      mem_canvas.height = 64;
      var context = mem_canvas.getContext('2d');
      context.fillStyle = "rgb(0,0,192)";
      context.fillRect(0, 0, 64, 64);
    }

    function drawCanvas() {
      var canvas = document.getElementById('SimpleCanvas');

      if (!canvas || !canvas.getContext) {
        return false;
      }
      var context = canvas.getContext('2d');
      context.drawImage(mem_canvas,32,32);
    }

  </script>
</head>
<body onload="createCanvas();" style="background-color:#D0D0D0;">
  <canvas id="SimpleCanvas" width="640" height="360" style="background-color:#FFFFFF;"></canvas>
  <div>Canvas Demo</div>
  <input type="button" value="Draw" onclick="drawCanvas();"/>
</body>
</html>

解説

bodyタグのonloadイベントにより、ページ表示時にcreateCanvas()関数が実行されます。createCanvas関数ではキャンバスオブジェクトを作成します。HTML Canvasの作成についての詳細はこちらの記事を参照してください。
画面下部の[Draw]ボタンのクリックにより、drawCanvas()関数が実行されます。

    function drawCanvas() {
      var canvas = document.getElementById('SimpleCanvas');

      if (!canvas || !canvas.getContext) {
        return false;
      }
      var context = canvas.getContext('2d');
      context.drawImage(mem_canvas,32,32);
    }
drawCanvas関数では、HTMLファイル中に記述されているcanvasタグの"SimpleCanvas"オブジェクトをgetElementByIdメソッドで取得します。取得したオブジェクトのgetContext()メソッドを呼び出し、キャンバスのコンテキストを取得します。コンテキストのdrawImageメソッドを呼び出し、キャンバスへの描画をします。描画する内容を指定する第一引数にcreateCanvas関数で作成したキャンバスオブジェクトであるmem_canvasを与えます、第二、第三引数は描画するキャンバスの位置を指定します。今回のコードでは(x,y)=(32,32)の位置に描画します。
drawImageの詳細は画像をHTML Canvasに描画するコードを紹介しているこちらの記事も参照してください。

実行結果

上記のHTMLファイルをWebブラウザで表示します。下図の画面が表示されます。


画面下部の[Draw]ボタンをクリックします。もともと配置されていたHTML Canvasにメモリ上で作成されたHTML Canvasの描画内容を描画できました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2016-08-01
iPentec all rights reserverd.