JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5 Canvasで円の中にテキストを描画する方法

HTML5 Canvasで円の中にテキストを描画する方法

HTML5のCanvas(キャンバス)を使うと、図形だけでなく、その中にテキストを配置することもできます。ここでは、円形の中にテキストを描画する方法を解説します。

基本の考え方

円の中にテキストを表示するには、まず context.beginPath() を呼び出して新しいパスを開始し、arc() で円を描いた後、fillText() でテキストを重ねて描画します。

サンプルコード

以下は、Canvas要素がクリックされた位置に、青い円とその中央に白いテキストを描画する例です。

$("#demo").on("click", "#canvas1", function(event) {
    var canvas = document.getElementById('canvas1');
    if (canvas.getContext) {
        var context = canvas.getContext("2d");
        var w = 25;
        var x = event.pageX;
        var y = Math.floor(event.pageY - $(this).offset().top);

        // 円を描画
        context.beginPath();
        context.fillStyle = "blue";
        context.arc(x, y, w / 2, 0, 2 * Math.PI, false);
        context.fill();

        // テキストを描画
        context.font = '9pt Arial';
        context.fillStyle = 'white';
        context.textAlign = 'center';
        context.fillText('amit', x, y + 4);
    }
});

HTMLの構造

Canvas要素は、次のようにマークアップします。

<div id="demo">
    <canvas id="canvas1"></canvas>
</div>

コードのポイント

  • beginPath():新しいパスを開始するメソッドです。呼び出さないと以前のパスが引き継がれ、意図しない描画になることがあります。
  • arc(x, y, 半径, 開始角, 終了角):中心座標と半径、角度を指定して円を定義します。完全な円の場合は 0 から 2π(Math.PI × 2)を指定します。
  • textAlign = 'center':テキストの揃え位置を中央に設定することで、円の中心に文字を配置しやすくなります。
  • fillText(テキスト, x, y):指定した座標にテキストを描画します。垂直方向の見た目を整えるため、y座標に少しオフセット(+4px)を加えています。

このように、Canvas APIの基本メソッドを組み合わせるだけで、円の中にテキストを表示する図形を簡単に作成できます。バッジやアイコンなど、さまざまなUI要素にも応用できるので、ぜひ活用してみてください。

  1. HTML5のCanvas要素を印刷する方法【サンプルコード付き】

    HTML5 Canvas要素を印刷するには HTML5の<canvas>要素は、そのままの状態では印刷ダイアログから意図どおりに出力できないことがあります。そこで一般的なのが、Canvasの描画内容をPNG画像のデータURLに変換し、それを新しいブラウザウィンドウに表示してから印刷を実行するという手法です。 ここでは、代表的な2つの実装方法を紹介します。 方法1:printElementプラグインを使う jQueryのprintElement系プラグインを利用すると、Canvas要素をシンプルな記述で印刷できます。まず、HTML側に印刷用のリンクを配置します。 <a hre

  2. HTML5 Canvasの変換(トランスフォーム)基本解説

    HTML5のCanvas APIには、変換行列(transformation matrix)を直接操作できるメソッドが用意されています。変換行列は初期状態で単位変換(identity transform)となっており、その後、各種の変換メソッドを呼び出すことで自由に調整できます。 主な変換メソッド translate(x, y):座標原点を指定した位置へ移動します。 rotate(angle):指定した角度(ラジアン)だけ描画内容を回転させます。 scale(x, y):横方向・縦方向に拡大・縮小します。 transform(a, b, c, d, e, f):現在の変換行列に、指定した行列