CanvasRenderingContext2D.createLinearGradient() - 線型グラデーションのオブジェクトを作成

投稿日: / 更新日:

JavaScriptの、CanvasRenderingContext2DオブジェクトのcreateLinearGradient()は、キャンパスに線形的なグラデーションを描画するためのCanvasGradientオブジェクトを取得するプロパティです。引数には、開始点のX座標、Y座標と終了点のX座標、Y座標を示す4つの数値を指定します。

開始点と終了点によってグラデーションの範囲を決めるとともに「方角を決める」という点を意識すると分かりやすいと思います。このオブジェクトに別途、addColorStop()で色を加えることで線形グラデーションの材料が完成します。その材料は、値として、fill()などに指定できます。

サンプルコード

<canvas id="target"></canvas>
// キャンパス要素を取得
var canvas = document.getElementById( "target" ) ;

// 二次元グラフィックスのコンテキスト(CanvasRenderingContext2D)を取得
var context = canvas.getContext( "2d" ) ;

// 線形グラデーションのCanvasGradientオブジェクトを取得 ( 例1 )
// 左上(0,0)から右下(100,100)に進むグラデーションになる
var gradient = context.createLinearGradient( 0,0, 100,100 ) ;

// X0、Y0からX100、Y0までの場合 ( 例2 )
// 左(0,0)から右(100,0)に向かって進むグラデーションになる
var gradient = context.createLinearGradient( 0,0, 100,0 ) ;

// X100、Y0からX100、Y100までの場合 ( 例3 )
// 右上(100,0)から右下(100,100)に向かって進むグラデーションになる
var gradient = context.createLinearGradient( 100,0, 100,100 ) ;

デモ

100x100のキャンパスを2つ用意しました。左側は塗りつぶし、右側はストローク(ライン)です。ボタンを押すと、createLinearGradient()を使って、CanvasGradientオブジェクトを取得します。この記事で紹介するメソッドは、取得するまでが役割になりますがそれだけだと何が起こっているか分からないので、おまけとして、「描画」を押すとCanvasGradientオブジェクトを元にしてグラデーションで塗りつぶします。描画はあくまでも別の処理です。ここでは開始点と終了点が違うことで、グラーデーションがどのように変わるのか、だけを意識して下さい。

構文

CanvasGradient = CanvasRenderingContext2D.createLinearGradient( x1, y1, x2, y2 ) ;

引数

項目説明
x1開始点のX座標。
y1開始点のY座標。
x2終了点のX座標。
y2終了点のY座標。

戻り値

項目説明
CanvasGradientCanvasGradientオブジェクトが戻り値となる。

ノート

サポート状況
主要な全てのブラウザがサポートしている。Ie8以下はcanvas自体に対応していない。
方角を決めるもの
開始点と終了点は範囲を決めるというのもあるが、それよりも「方角を決める」という点を強く意識すると分かりやすかった。
色はメソッドで追加
createLinearGradient()で作成したCanvasGradientオブジェクトに、色の情報を設定するにはaddColorStop()メソッドを利用する。