グラフィックス

グラフィックス・アニメーション #

グラフィックス及びアニメーションについてを述べる。

Canvas(2D) #

Canvasを利用すると、Javascriptでブラウザ上に図を描画することができる。

Canvasを利用するには、HTMLでcanvas要素を用意する。

html

<canvas id="sample" width="100" height="100"></canvas>

Javascriptから、このcanvas要素を参照し、図の描画を行う。

Javascriptのサンプルコードを以下に示す。

//canvas要素取得
var canvas = document.getElementById('sample');
//2d用 コンテキストオブジェクト取得
var context = canvas.getContext('2d');

//円を描画
context.beginPath();
context.fillStyle = "red"
context.arc(30,30,20,0,Math.PI*2,false);
context.stroke();

表示例





javascriptでは、まずcanvas要素を取得して、その後にgetContext()関数で'2d’を指定する事で2d用のコンテキストオブジェクトを取得する。

その後に、コンテキストオブジェクトのプロパティ、関数を利用して図形の描画を行う。

コンテキストオブジェクトの主なプロパティ、関数は以下の通り。

プロパティ名 意味
canvas 操作しているcanvasオブジェクト
globalAlpha 図の透明度
globalCompositeOperation 図の合成方法
strokeStyle 線の色やスタイル
fillStyle 塗り潰しの色やスタイル
shadowOffsetX 水平方向の影の距離
shadowOffsetY 垂直方向の影の距離
shadowBlur 影のぼかし効果の設定
shadowColor 影の色
lineWidth 線の幅
lineCap 線の端の形状
lineJoin 線の接合箇所の形状
font テキストのフォント
textAlign テキストのアラインメント設定('start','end','left','right','center'のいずれか)
関数 意味 引数
save() 現在の描画状態を保存する なし
scale() 拡大・縮小する 水平方向の伸縮率,垂直方向の伸縮率
rotate() 回転する 回転する角度[rad]
rect() 四角形を描画する 左上の点のx座標、左上の点のy座標,幅、高さ
arc() 円弧を描画する 円の中心のx座標,円の中心のy座標,半径,円弧の開始位置[rad],円弧の終了位置[rad],時計回り(false)か反時計回り(true)
createLinearGradient() 線形グラデーションを指定する グラデーション開始点のx座標、y座標,グラデーション終了点のx座標、y座標
createRadialGradient() 円形グラデーションを指定する グラデーション開始円中心のx座標,y座標,半径、グラデーション終了円中心のx座標,y座標,半径
clearRect() 四角形の形にクリアする rect()と同じ
fillRect() 塗り潰された四角形を描く rect()と同じ
strokeRect() 輪郭の四角形を描く rect()と同じ
fill() 現在の塗り潰し設定で塗りつぶす なし
stroke() 現在のスタイルで輪郭を描く なし
beginPath() 現在のパスをリセットする なし
strokeText() 輪郭のテキストを指定した座標に描画する 描く文字列,文字列の左下の点のx座標,文字列の左下の点のy座標
fillText() 塗り潰しのテキストを指定した座標に描画する strokeText()と同じ
moveTo() 新しい開始点を座標指定する 点のx座標、点のy座標
lineTo() 直前の座標と指定した座標を結ぶ直線を引く 点のx座標、点のy座標
quadraticCurveTo() 2次ベジェ曲線を引く 制御点のx座標,y座標、終点のx座標,y座標
bezierCurveTo() 3次ベジェ曲線を引く 第1制御点のx座標,y座標、第2制御点のx座標,y座標、終点のx座標,y座標

色々使った例を以下に示す。

html

<canvas id="sample2" width="400" height="200"></canvas>

Javascript

//canvas要素取得
var canvas2 = document.getElementById('sample2');
//2d用 コンテキストオブジェクト取得
var context2 = canvas2.getContext('2d');

//円を描画
context2.beginPath();
context2.strokeStyle = "red";
context2.fillStyle = "yellow";
context2.arc(30,30,20,0,Math.PI*2,false);
context2.stroke();
context2.fill();

//四角形を描画
context2.beginPath();
context2.strokeStyle = "blue";
context2.fillStyle = "green";
context2.rect(10,120,40,40);
context2.stroke();

//線
context2.beginPath();
context2.lineWidth = 1;
context2.moveTo(200,120);
context2.lineTo(250,120);
context2.stroke();
context2.beginPath();
context2.lineWidth = 5;
context2.moveTo(200,140);
context2.lineTo(250,140);
context2.stroke();
context2.lineWidth = 10;
context2.moveTo(200,160);
context2.lineTo(250,160);
context2.stroke();

//円弧
context2.beginPath();
context2.lineWidth = 1;
context2.arc(200,20,30,Math.PI/4,Math.PI*3/4,false);
context2.stroke();

//テキスト
context2.beginPath();
context2.strokeStyle = "black";
context2.fillStyle = "black";
context2.strokeText('Text',300,40);
context2.fillText('Text',300,60);

//テキスト(フォント、文字サイズ)
context2.beginPath();
context2.font = 'bold 20px sans-serif'
context2.fillText('Text',300,100)
context2.font = 'italic 20px sans-serif'
context2.fillText('Text',300,120)

//テキスト(シャドー)
context2.beginPath();
context2.font = 'bold 20px sans-serif'
context2.shadowColor = 'red'
context2.shadowBlur = 3
context2.shadowOffsetX = 3
context2.shadowOffsetY = 3
context2.fillText('Text',300,140)

表示例





SVG #

SVG(Scalable Vector Graphics)とは、ベクター形式の画像フォーマットである。ベクター形式とは、点と点で結ばれた線で図形を表す方法である。これに対し、Canvasはピクセル形式での描画となる。

SVGは、XMLタグを使用して描画を行う。そのために使われるXML要素は主に以下の通りである。

要素名 意味
circle 円を作成する
ellipse 楕円を作成する
line 線を作成する
polygon 多角形を作成する
rect 四角形を作成する

使用例を以下に示す。

html

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <circle cx="100" cy="100" r="30" stroke="black" stroke-width="3" fill="blue"></circle>
</svg>

表示例