Webデザイン |
Lesson 10 | CANVAS要素で グラフを描画する |
制作・文 | 藤沢立也(Suika Cube Inc.) | |||
> | To Use | CSS | JavaScript | ||
> | Browser | IE 9over | Firefox 2over | Safari 3.1over |
HTML5で定義されたCANVASは、JavaScriptなどを用いてブラウザ上に描画するためのタグで、線や図形を描画したり、画像を扱ったりできる。ここでは簡単なグラフを作成しながら基本的な使い方を学んでみよう。 |
01
【1-1】CANVASタグには、幅(width属性)と高さ(height属性)、範囲(描画領域)を指定する。またJavaScriptで使用するid属性も設定する。タグの間には非対応ブラウザ用の注意書きを入れておこう
【1-2】CANVASタグのidをgetElementByIdの引数に指定する。なお、getContext()の引数は現在では「2D」しか選択できないようだ
02
【2-1】四角の描画。beginPath()は現在の描画パスのリセット。新しい地点から描画をするときに実行する。fillRect(x, y, width, height) は四角を描画する。x,yは図形の左上の点。widthは図形の幅、heightは図形の高さを引数にとる。枠線だけの四角はstrokeRect(x, y, width, height)
【2-2】色をつける。fillStyle = 'rgb(red,gr een,blue)'はCSSのRGBフォーマットで色指定が可能。また rgba (red, green,blue,alpha)での色指定もできる。4つめの引数、透明度(アルファ)は1を100%とし、1〜0の間で透明の割合を指定する
【2-3】グラフのように並べてみる
【2-4】グラフに影をつけた図
03
【3-1】画像ファイルを背景に指定する。draw Image(image, dx, dy)はimageに指定された画像オブジェクトをコンテキストの座標dx,dyに描画する。この時点ではファイルを読込完了前に描画メソッドが実行されてしまう
【3-2】読み込み終了のタイミングで描画する。読み込み完了後に実行すればエラーなく描画できるが、キャッシュが効いてしまった場合onloadが発生しないので描画されないことになる
【3-3】キャッシュの対策をする。ファイルのクエリが異なるとキャッシュが効かない仕組みを利用してnew Date().getTime()で現在の時刻を取得しクエリに付け加える。これでキャッシュされずに常にonloadイベントが発生する
【3-4】背景を指定した棒グラフ
04
【4-1】折れ線グラフの作成。円弧の描画にはarcメソッド、塗りを表示するにはfill()を使う。
arc(x, y, radius, startAngle, endAngle,anticlockwise)のx,yは円の中心の座標、radiusには円の半径、startAngleは起点の角度、endAngleは終点の角度、anticlockwiseは反時計回りの円ならtrue、時計回りならfalse。
真円の場合はendAngleにMath.PI*2を指定。度数を指定する場合は度数 * Math.PI / 180
【4-2】折れ線グラフの作成。線色の指定はstrokeStyle = '色指定'、線の幅はlineWidth[=value]で指定する。線を引くときはmoveTo(x,y) で起点のx,y座標、 lineTo(x,y)で終点のx,y座標設定。次からは前回指定した座標が起点となる。またclosePath()は現在の地点から最初にmoveToで指定した起点への線を引いてくれるので図形を閉じることができる。最後はstroke()で表示しよう
05
【5-1】intervalID = setInterval(func,delay) はfuncに入れた関数をdelay ミリ秒ごとに呼び出す関数。CANVAS では一度描いたデータは消えないのでclearRect(x,y,width,height)で指定座標の範囲を消去する。またCANVASでは描いた図形の色などの状態は次の図形に引き継がれる