createRadialGradient(x0, y0, r0, x1, y1, r1)メソッドは、円形グラデーションを指定する際に使用します。
createRadialGradient()メソッドには、6つの引数を指定します。
前半の3つは、中心の座標(x0, y0)半径r0の円形グラデーションの開始円を表します。
後半の3つは、中心の座標(x1, y1)半径r1の円形グラデーションの終了円を表します。
6つの引数を指定することで、この2つの円を結ぶ放射状の円形グラデーションを定義することになります。
値は、座標空間の単位で指定します。
開始円と終了円が同じ位置・同じ大きさの場合には、円形グラデーションは描画されません。
また、引数のいずれかに無限大や数値以外の値を指定するとエラー(NOT_SUPPORTED_ERR)、
半径に負の値を指定するとエラー(INDEX_SIZE_ERR)となります。
グラデーションが描画される際には、その時点で指定されている変形の影響を受けます。
円形グラデーションで塗りつぶした円を描画する場合は以下のような流れとなります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasで図形を描く</title>
<script type="text/javascript">
<!--
function test() {
//描画コンテキストの取得
var canvas = document.getElementById('sample');
if (canvas.getContext) {
var context = canvas.getContext('2d');
//ここに具体的な描画内容を指定する
//新しいパスを開始する
context.beginPath();
//円形グラデーションを指定する:開始円=中心の座標(140,80)半径20、終了円=中心の座標(140,80)半径80
var gradient = context.createRadialGradient(140,80,20,140,80,80);
//赤→緑→青となるように、グラデーション色を3つ追加する
gradient.addColorStop(0.0 , 'rgb(255,0,0)');
gradient.addColorStop(0.5 , 'rgb(0,255,0)');
gradient.addColorStop(1.0 , 'rgb(0,0,255)');
//上で指定したグラデーション内容を塗りつぶしスタイルに代入する
context.fillStyle = gradient;
//(140,80)を中心点とする、半径50の円弧を、開始角度90度、終了角度180度で、半時計回りに作成する
context.arc(140,80,100,45/180*Math.PI,135/180*Math.PI,true);
//現在のパスを塗りつぶす
context.fill();
}
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
</body>
</html>