HTML5新機能 〜 canvas要素

HTML5の新機能の1つ「canvs要素」を試してみた。
例によって検証アプリを作成して、試した結果が下図。

http://wbs-newworld.appspot.com/html5studyCanvas.html

作成するのは簡単だが、ボタンをクリックするたびにcanvas描画領域を初期化する方法が分からなかったので、そこはメモしておく。

まず、canvasで描画するためには、canvasタグを使用して描画領域を設定する。

<canvas id="myCanvas" width="640" height="480">
 <!-- ここに描画されます-->
</canvas>

この際、widthとheightは必須属性ではないが、明示的に指定することでブラウザの規定値を使用しなくなる。

次に、描画であるが、例えば長方形を描く場合はjavascriptで次のように書く。

 //widthとheightの初期化
 canvas.setAttribute('width', '10000');
 canvas.setAttribute('height', '10000');
 
 //矩形
 if(ct){
  ct.fillRect(20, 20, 120, 80);
  ct.strokeRect(60, 60, 120, 100);
 }

ここで、canvas.setAttributeを使用して、widthとheightを改めて指定している。これは、何かボタンを押すたびに、描画する図形を切り替える場合には、canvas領域を初期化する必要があり、そのために必要である。

例えば、下記はボタンを押すことで、三角形の描画と長方形の描画を切り替える。

$drawRectangle.click(function(){
 canvas.setAttribute('width', '10000');
 canvas.setAttribute('height', '10000');
 //矩形
 if(ct){
  ct.fillRect(20, 20, 120, 80);
  ct.strokeRect(60, 60, 120, 100);
 }
});

$drawTriangleId.click(function(){
 canvas.setAttribute('width', '10000');
 canvas.setAttribute('height', '10000');
 if(ct){
  //図形を描き始めることの宣言
  ct.beginPath();
  
  //図形を描きはじめる位置まで移動
  ct.moveTo(20,20);

  //現在位置から引数の座標まで線を引く
  ct.lineTo(180,100);
  
  //現在位置から引数の座標まで線を引く
  ct.lineTo(180,50);

  //現在位置と始点まで線を引く
  ct.closePath();

  //ブラウザへ三角形を描画する
  ct.stroke();
  } 
});