CanvasGradient.addColorStop() - 線形グラデーションの色を指定する

投稿日: / 更新日:

JavaScriptの、CanvasGradientオブジェクトのaddColorStop()は、グラデーションの色を調整するメソッドです。グラデーションは0が全体の開始点、1が全体の終了点という計算になっています。第1引数には開始点からの距離を01で指定します。第2引数には、第1引数で決めた位置の色を指定します。色はCSSで許可された値ならなんでも大丈夫です。このメソッドは重ねて複数回、使用する仕様になっています。複数の位置に違う色を指定した場合、色と色の間が滑らかに補完されることで、グラデーション効果を生みます。

「位置に色を置く」ということを意識しましょう。複数の位置に違う色を置くことで、その色と色の間が補完される。逆に言うと、全く同じ位置に違う色を設置した場合、色と色に隙間が存在しないため補完されません。ということは、その場合、その位置で2つの色がくっきりと分かれることになります。

サンプルコード

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

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

// 線形グラデーションのCanvasGradientオブジェクトを取得
var gradient = context.createLinearGradient( 0,0, 100,100 ) ;

// addColorStop()を使ってグラデーションの色を調整
gradient.addColorStop( 0.2, "red" ) ;	// 開始地点から0.2の割合の位置に赤
gradient.addColorStop( 0.4, "blue" ) ;	// 開始地点から0.4の割合の位置に青
gradient.addColorStop( 0.7, "green" ) ;	// 開始地点から0.7の割合の位置に赤
gradient.addColorStop( 0.8, "#2660A1" ) ;	// 開始地点から0.8の割合の位置に#2660A1
gradient.addColorStop( 1.0, "#d36015" ) ;	// 開始地点から1.0の割合の位置に#d36015

デモ

200x200サイズのキャンパスです。ボタンを押すと、開始点(0,0)と終了点(200,0)を設定してあるCanvasGradientオブジェクトに、ボタンのラベル通りの色を設定します。設定するまでがaddColorStop()の働きです。それだけだと何が起こったかが分からないので、おまけとして、「描画」のボタンを押すと、このオブジェクトを使って要素を塗りつぶします。色を設定するまでがaddColorStop()の働きだということを理解して下さい。

構文

void CanvasGradient.addColorStop( offset, color ) ;

引数

項目説明
offset01の数値を指定する。この数値はグラデーション全体の0が開始点、1が終了点とした場合の、開始点からのオフセット(距離)を意味する。その位置に第2引数で指定した色を設置される。
colorCSSで許可されている方法で色を指定する。#D36015brownrgb(211,96,21)rgba(211,96,21,0.1)hsl(24,82%,45%)transparentなど。

戻り値

戻り値はありません。

ノート

サポート状況
主要な全てのブラウザがサポートしている。Ie8以下はcanvas自体に対応していない。
グラデーション効果は色と色の間
色と色の間が補完されることで、グラデーション効果が生まれる仕組み。つまり、補完されるべき隙間がない場合は、その位置で2つの色がくっきりと分かれることになる。
最初と最後は引き伸ばし
開始点(0)、または終了点(1)の位置に色を指定しなかった場合、そこから一番近い位置に設置した色が引き伸ばされる。