2014年3月20日木曜日

Lesson09: Canvas(円)

このサイトは移転しました。1秒後に自動でジャンプします。
移動しない場合は、ここをクリックしてください。



前回はCanvasに長方形を描画してみました。
今回はCanvasに円を描いてみましょう。
それでは、テキストエディタで以下を打ち込んでください。

リスト9: lesson09.html

<!DOCTYPE html>
<html>
  <head>
    <title>Lesson09</title>
  </head>
  <body>
    <canvas id="myCanvas" width="300px" height="200px"></canvas>
    <script>
        var canvas = document.getElementById("myCanvas");
        var context = canvas.getContext("2d");
        var width  = canvas.width;
        var height = canvas.height;

        // Rectangle
        context.beginPath();
        context.strokeStyle="gray";
        context.rect(0, 0, width, height);
        context.stroke();

        // Circle
        context.beginPath();
        context.arc(width / 2, height / 2, height * 3 /10, 0, Math.PI * 2, true);
        context.fillStyle = "#ed2939";
        context.fill();
    </script>
  </body>
</html>

保存したファイルをWebブラウザで開くと、日本の国旗が表示されます。



【解説】

canvas要素から描画コンテキスト取得するまでは前回と同様ですね。
今回は、canvas要素のwidth属性とheight属性を取ってきて、その値をベースに描画しますので、HTMLの<canvas>タグの大きさを変えても、 それに合わせて描画する大きさも変わるように計算を行っています。

円を描く関数は、以下の書式です。
arc(x, y, radius, startAngle, endAngle, anticlockwise)

引数解説
x,y円の中心座標
radius円の半径
startAngle開始角度
endAngle終了角度
anticlockwise反時計回りかどうか


開始角度、終了角度は生活で馴染みがある °(degree; 度)の単位ではなくて、ラジアン(radian)という単位を使います。
1ラジアンの定義は『円の半径に等しい長さの弧の中心に対する角度』です。
難しければ、180°=π[rad] (3.14159・・・) 、360°=2π[rad]ということを覚えておいてください。
上記の例では、終了角度が Math.PI * 2 なので、0°~360°の円弧を描きます。
弧を描く場合はarc()関数を呼び出した後に、stroke()関数を、中を塗りつぶす場合はfill()関数を呼び出してください。

0 件のコメント:

コメントを投稿