[CreateJS] Graphicsクラスを使って四角や丸を画像なしで描画する
こんにちは、@yoheiMuneです。
CreateJS関連のブログの第4弾、Graphicsクラスの使い方をブログに記載したいと思います。

このブログでは、筆者がCreateJSを実際に使って学んだ事を中心に、いくつか記事を書いております。
- Canvasアニメーションを実装する時に便利で良く利用しているJSライブラリ、CreateJS
- Bitmapクラスを使って画像の描画を自由自在に
- 色々なFilterを適用して描画する内容を変化させる
- Graphicsクラスを使って四角や丸を画像なしで描画する(今日はここ)
四角形、丸、直線、曲線、グラデーションなどを描画することが可能です。
以下では、それぞれの描画例を紹介しています。
Graphicsは、色などを指定して、描画して、ShapeとしてStageに追加します。
Graphicsクラスのメソッドを使うと、簡単に色々と図形を描画できます。
Graphicsクラスを使う場合には、画像と描画物を一緒に扱う事が出来て便利な場合も多いです。
使っていいのかは別問題として、慣れるとこれ楽で良いかも。
以下は、一つ上の画像を描画する処理をProtectedメソッドで記述した例となります。
- http://www.createjs.com/Docs/EaselJS/Graphics.html
今回紹介しきれなかった機能もありますので、ぜひ上記のリファレンスをご覧頂ければと思います。
今後もCreateJSの使い方をブログに書いていきたいと思いますので、どうぞ宜しくお願いします。
最後までご覧頂きましてありがとうございました。
CreateJS関連のブログの第4弾、Graphicsクラスの使い方をブログに記載したいと思います。

CreateJSとは
CreateJSとは、HTML5 Canvasを使った描画/アニメーションの実装を強力にサポートしてくれるライブラリです。このブログでは、筆者がCreateJSを実際に使って学んだ事を中心に、いくつか記事を書いております。
- Canvasアニメーションを実装する時に便利で良く利用しているJSライブラリ、CreateJS
- Bitmapクラスを使って画像の描画を自由自在に
- 色々なFilterを適用して描画する内容を変化させる
- Graphicsクラスを使って四角や丸を画像なしで描画する(今日はここ)
Graphicsクラスとは
Graphicsクラスとは、CreateJS内のEaselJSで定義された機能で、HTML5 Canvasの機能をほぼそのまま利用できるクラスです。四角形、丸、直線、曲線、グラデーションなどを描画することが可能です。
以下では、それぞれの描画例を紹介しています。
基本的な使い方
まずはGraphicsの使い方を記載します。Graphicsは、色などを指定して、描画して、ShapeとしてStageに追加します。
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas1"));
// Graphicsのインスタンスを作成します。
var graphics = new createjs.Graphics();
// 色の指定(線と塗りつぶしとそれぞれ色を指定する)
graphics.beginStroke("#cccccc");
graphics.beginFill("#7aeac8");
// 図形の描画を行う(ここのバリエーションを後述します)
graphics
.moveTo(80,80)
.lineTo(240,80)
.lineTo(240,240)
.lineTo(80,240)
.closePath();
// Shapeとして、Stageに追加します。
var shape = new createjs.Shape(graphics);
shape.x = 0;
shape.y = 0;
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
色々な図形を描画する
上記では、パスを使って四角形を描画しました。Graphicsクラスのメソッドを使うと、簡単に色々と図形を描画できます。
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas2"));
// 利用する変数
var graphics, shape;
// 円を描く
graphics = new createjs.Graphics();
graphics
.beginStroke("#cccccc")
.beginFill("#3817a3")
//arc ( x , y , radius , startAngle , endAngle , anticlockwise )
.arc(160, 160, 120, 0, 360, true);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// 楕円を描く
graphics = new createjs.Graphics();
graphics
.beginStroke("#cccccc")
.beginFill("#6045b8")
//drawEllipse ( x , y , w , h )
.drawEllipse(10, 380, 300, 200);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// 角丸四角形を描く
graphics = new createjs.Graphics();
graphics
.beginStroke("#cccccc")
.beginFill("#594D80")
//drawRoundRect ( x , y , w , h , radius )
.drawRoundRect(80, 720, 160, 160, 20);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
曲線を描画する
Graphicsクラスのメソッドを使うと、2次ベジエ曲線、3次ベジエ曲線を描画することが出来ます。
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas3"));
// 利用する変数
var graphics, shape;
// 2次ベジエ曲線を描く
graphics = new createjs.Graphics();
graphics
.beginStroke("#cccccc")
.beginFill("#a6199e")
.moveTo(20, 160)
// quadraticCurveTo ( cpx , cpy , x , y )
.quadraticCurveTo(160, -60, 300, 160)
.quadraticCurveTo(160, 40, 20, 160)
.closePath();
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// 3次ベジエ曲線を描く
graphics = new createjs.Graphics();
graphics
.beginStroke("#cccccc")
.beginFill("#a6199e")
.moveTo(20, 480)
// bezierCurveTo ( cp1x , cp1y , cp2x , cp2y , x , y )
.bezierCurveTo(160, 60, 160, 640, 300, 480)
.bezierCurveTo(240, 640, 40, 640, 20, 480)
.closePath();
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
グラデーション(線形)を描画する
グラデーション(線形)は、以下のように実装することで表現することが可能です。
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas4"));
// 利用する変数
var graphics, shape;
// グラデーション(線形)を描画する。
// 塗りつぶす場合は以下。
// beginLinearGradientFill ( colors , ratios , x0 , y0 , x1 , y1 )
// Strokeの場合は以下。
// beginLinearGradientStroke ( colors , ratios , x0 , y0 , x1 , y1 )
graphics = new createjs.Graphics();
graphics
.beginLinearGradientFill(["#ffff00", "#00ffff"], [0, 1], 0, 0, 0, 320)
.drawRect(0, 0, 320, 320);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
グラデーション(線形)を描画する
グラデーション(円形)は、以下のように実装することで表現することが可能です。
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas5"));
// 利用する変数
var graphics, shape;
// グラデーション(円形)を描画する。
// 塗りつぶす場合は以下。
// beginRadialGradientFill ( colors , ratios , x0 , y0 , r0 , x1 , y1 , r1 )
// Strokeの場合は以下。
// beginRadialGradientStroke ( colors , ratios , x0 , y0 , r0 , x1 , y1 , r1 )
graphics = new createjs.Graphics();
graphics
.beginRadialGradientFill(["#ff00ff", "#00ffff"], [0, 1], 160, 160, 0, 160, 160, 320)
.drawRect(0, 0, 320, 320);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
画像を描画する
BitmapクラスではなくGraphicsクラスでも、画像を描画する事が可能です。Graphicsクラスを使う場合には、画像と描画物を一緒に扱う事が出来て便利な場合も多いです。
// 画像を取得します。
var star = window.yoheim.assets["star"];
// ステージを作成します。
var stage = new createjs.Stage(document.getElementById("canvas6"));
// 利用する変数
var graphics, shape;
// グラデーションの上に、画像を描画します。
graphics = new createjs.Graphics();
graphics
.beginFill("#ffffff")
.beginBitmapFill(star, "no-repeat")
.drawRect(0, 0, 320, 320);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
// ステージの更新を行う。
stage.update();
Protectedメソッドの利用
GraphicsのProtectedメソッドを用いると、短いメソッド名で描画することが出来ます。使っていいのかは別問題として、慣れるとこれ楽で良いかも。
以下は、一つ上の画像を描画する処理をProtectedメソッドで記述した例となります。
// 利用する変数
var graphics, shape;
// protectedメソッドを使うと省略した関数名で描画することが出来ます。
graphics = new createjs.Graphics();
graphics
.f("#ffffff")
.bf(star, "no-repeat")
.dr(0, 0, 320, 320);
shape = new createjs.Shape(graphics);
stage.addChild(shape);
参考資料
Graphicsクラスのリファレンスは以下から参照できます。更に詳しい情報は、以下にてご確認ください。- http://www.createjs.com/Docs/EaselJS/Graphics.html
最後に
Graphicsクラスを使えるようになると、画像を使わなくてもあんメーションさせる素材を作ることはできたりと、便利な感じです。今回紹介しきれなかった機能もありますので、ぜひ上記のリファレンスをご覧頂ければと思います。
今後もCreateJSの使い方をブログに書いていきたいと思いますので、どうぞ宜しくお願いします。
最後までご覧頂きましてありがとうございました。


