--- title: 文字を描く slug: Web/API/Canvas_API/Tutorial/Drawing_text tags: - Canvas - Graphics - Intermediate - Tutorial translation_of: Web/API/Canvas_API/Tutorial/Drawing_text original_slug: Drawing_text_using_a_canvas ---
前の章でスタイルや色を適用する方法を見た後は、canvas にテキストを描画する方法を見ていきます。
canvas のレンダリングコンテキストでは、2 種類のテキスト描画方法を提供します:
fillText
の例現在の fillStyle
を使用して、テキストを塗りつぶして描画します。
function draw() { var ctx = document.getElementById('canvas').getContext('2d'); ctx.font = "48px serif"; ctx.fillText("Hello world", 10, 50); }
<canvas id="canvas" width="300" height="100"></canvas>
draw();
{{EmbedLiveSample("A_fillText_example", 310, 110)}}
strokeText
の例現在の strokeStyle
を使用して、テキストの輪郭を描画します。
function draw() { var ctx = document.getElementById('canvas').getContext('2d'); ctx.font = "48px serif"; ctx.strokeText("Hello world", 10, 50); }
<canvas id="canvas" width="300" height="100"></canvas>
draw();
{{EmbedLiveSample("A_strokeText_example", 310, 110)}}
上記の例ではテキストをデフォルトのサイズより若干大きくするため、すでに font
プロパティを使用していました。canvas にテキストを表示する形式を調整できるプロパティは、さらにいくつかあります:
start
、end
、left
、right
、center
です。デフォルト値は start
です。top
、hanging
、middle
、alphabetic
、ideographic
、bottom
です。デフォルト値は alphabetic
です。ltr
、rtl
、inherit
です。デフォルト値は inherit
です。以前に CSS を扱ったことがあれば、これらのプロパティも見慣れているでしょう。
以下は WHATWG 提供の、textBaseline
属性によってサポートされている様々なベースラインを示した図です。
以下のコードを編集すると、canvas の変更個所をその場で確認できます:
ctx.font = "48px serif"; ctx.textBaseline = "hanging"; ctx.strokeText("Hello world", 0, 100);
<canvas id="canvas" width="400" height="200" class="playable-canvas"></canvas> <div class="playable-buttons"> <input id="edit" type="button" value="編集" /> <input id="reset" type="button" value="リセット" /> </div> <textarea id="code" class="playable-code"> ctx.font = "48px serif"; ctx.textBaseline = "hanging"; ctx.strokeText("Hello world", 0, 100);</textarea>
var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var textarea = document.getElementById("code"); var reset = document.getElementById("reset"); var edit = document.getElementById("edit"); var code = textarea.value; function drawCanvas() { ctx.clearRect(0, 0, canvas.width, canvas.height); eval(textarea.value); } reset.addEventListener("click", function() { textarea.value = code; drawCanvas(); }); edit.addEventListener("click", function() { textarea.focus(); }) textarea.addEventListener("input", drawCanvas); window.addEventListener("load", drawCanvas);
{{EmbedLiveSample('Playable_code', 700, 360)}}
テキストのより詳細な情報を得る必要がある場合は、以下のメソッドでそれを測定できます。
以下のコードスニペットは、テキストを測定して幅を得る方法を示しています。
function draw() { var ctx = document.getElementById('canvas').getContext('2d'); var text = ctx.measureText("foo"); // TextMetrics オブジェクト text.width; // 16; }
Gecko (Firefox、Firefox OS および他の Mozilla ベースアプリケーション) では一部の接頭辞付き API で、早期バージョンのテキスト描画法を実装しています。これらは非推奨化または削除されており、動作を保証しません。