Canvasで文字を描く。そして陰もつけてみた。

こんにちは、@yoheiMuneです。
今日は、久しぶりにHTML5のお話。Canvasにて文字を表現する方法を学んだので、ブログに記載したいと思います。


Canvasに文字を描くText

Canvasで文字を描く為に、fillTextとstrokeTextの2つのメソッドが用意されています。その使い方例が以下となります。

<canvas id="myCanvas" style="width:500px; height:500px; border:1px solid #aaaaaa;"></canvas>
<script type="text/javascript">
  var canvas = document.querySelector("#myCanvas");
  var context = canvas.getContext('2d');

  // draw Texts
  context.font = "18px Arial";
  context.fillStyle = 'rgba(0, 0, 0, 1)';
  context.fillText('This is first word', 10, 25);
  context.strokeStyle = 'rgba(255, 0, 0, 1)';
  context.strokeText('This is second word', 10, 60);
</script>

fillTextとstrokeTextメソッドには、それぞれ以下の引数を指定します。それぞれのメソッドは、contextの保持するメソッドのようですね。

メソッド 第1引数 第2引数 第3引数 第4引数(Optional)
fillText 表示する文字列 開始x座標 開始y座標 横幅
strokeText 表示する文字列 開始x座標 開始y座標 横幅

文字を表示する時のフォントや色の指定は、context.fontやcontext.fillStyle, context.strokeStyleにて指定します。サンプルは上のコードを参考にして頂けると幸いです。


文字に陰もつけてみた

陰をつける為には、context.shadowColor, context.shadowOffsetX, shadowOffsetY, context.shadowBlurに値を設定してオブジェクトや文字を描画する事で、陰をつけることが出来ます。以下がサンプルコードとなります。

<canvas id="myCanvas" style="width:500px; height:500px; border:1px solid #aaaaaa;">
</canvas>
<script type="text/javascript">
  var canvas = document.querySelector("#myCanvas");
  var context = canvas.getContext('2d');

  // text with shadow
  context.shadowColor = 'gray';
  context.shadowOffsetX = 4;
  context.shadowOffsetY = 0;
  context.shadowBlur = 4;
  context.strokeText('Text with shadow', 10, 95);
</script>

陰に関するプロパティの意味は以下の内容となります。

プロパティ 意味
context.shadowColor 陰の色
context.shadowOffsetX 陰を対象からどれくらいずらすか。正数は右にずれる。
context.shadowOffsetY 陰を対象からどれくらいずらすか。正数は下にずれる。
context.shadowBlur 陰をどれだけぼかすか。正数を指定する。

ちなみに、Canvasで文字を描いたり、陰をつけると以下のような表示になるようです。


参考サイト

以下のページを参考にしました。ありがとうございます。
http://www.w3.org/TR/2dcontext/#text
http://www.html5.jp/canvas/ref/method/fillText.html


最後に

Canvasは色々とやったけど、面白い機能だなと実感しました。文字も描けて、ビデオとも連携出来て、もちろん絵も描ける。画像としても保存出来る。色々と出来てたのしそうです。

関連記事です。♪(´ε` )
Canvasタグでお絵描きサイトを作ってみた
Canvasを使ってラインアートを表現してみた
Canvasでグラデーションも自由に
Canvasに画像を読み込み、そして・・・


運営しているサイトです。どうぞよろしくお願いします(*´∇`*)
Facebook
HTML5LearnersHTML5を学び合うFacebookPage
HTML5サンプルページ:作成したサンプルを載せているサイト
YoheiM.NET:技術情報を中心に情報発信サイト
cooking_bot:料理情報をつぶやくTwitterアカウント