【HTML5】入門 HTML5をまとめてみる4【Canvas】
こんにちは、しきゆらです
HTML5関連の記事は4回目となりますね
前回は、Canvasにグラフを作ってみました(今までのHTML5関連の記事はこちら→HTML5関連)
今回は、Canvasでのグラデーションについてまとめて行きます
Canvasでのグラデーション
まず、Canvasでは2種類のグラデーションがサポートされています
- 線形グラデーション
- 円形グラデーション
どのようなものかは、実際に見てみましょう→デモページ
線形グラデーションは、直線的に変化し
円形グラデーションは、放射状に変化しています
そのまんまですね
では、コードを見てみましょう
グラデーションのコード
以下のコードで出来ています
function draw_gradient(){
/*線形グラデーション*/
var canvas = document.getElementById("canvas_gradient1");
var context = canvas.getContext("2d");
var gradient = context.createLinearGradient(0, 0, 300, 0);
gradient.addColorStop(0, "rgb(255,0,0)");
gradient.addColorStop(0.5, "rgb(255, 255, 0)");
gradient.addColorStop(1, "rgb(0, 0, 255)");
context.fillStyle = gradient;
context.fillRect(0, 0, 300, 300);
var canvas2 = document.getElementById("canvas_gradient2");
var context2 = canvas2.getContext("2d");
var gradient2 = context2.createLinearGradient(0, 0, 0, 300);
gradient2.addColorStop(0, "rgb(255,0,0)");
gradient2.addColorStop(0.5, "rgb(255, 255, 0)");
gradient2.addColorStop(1, "rgb(0, 0, 255)");
context2.fillStyle = gradient2;
context2.fillRect(0, 0, 300, 300);
var canvas3 = document.getElementById("canvas_gradient3");
var context3 = canvas3.getContext("2d");
var gradient3 = context3.createLinearGradient(0, 0, 300, 300);
gradient3.addColorStop(0, "rgb(255,0,0)");
gradient3.addColorStop(0.5, "rgb(255, 255, 0)");
gradient3.addColorStop(1, "rgb(0, 0, 255)");
context3.fillStyle = gradient3;
context3.fillRect(0, 0, 300, 300);
/*円形グラデーション*/
var canvas = document.getElementById("canvas_gradient4");
var context = canvas.getContext("2d");
var gradient = context.createRadialGradient(150, 150, 10, 150, 150, 200);
gradient.addColorStop(0, "rgb(255,0,0)");
gradient.addColorStop(0.5, "rgb(255, 255, 0)");
gradient.addColorStop(1, "rgb(0, 0, 255)");
context.fillStyle = gradient;
context.fillRect(0, 0, 300, 300);
}コード全体として
- Canvasの取得
- contextの取得
- グラデーションの定義
- グラデーションの色指定
- Canvasに描画
という固まりが並んでいます
細かく見て行きましょう
Canvas、contextの取得
var canvas = document.getElementById("canvas_gradient1");
var context = canvas.getContext("2d");この部分は前回までと同じです
HTMLで定義したCanvasをidを用いて取得し、そのCanvasのcontextを取得します
contextには必ず「2d」を渡すことに注意します
グラデーションの定義
var gradient = context.createLinearGradient(0, 0, 300, 0);
var gradient = context.createRadialGradient(150, 150, 10, 150, 150, 200);
これは5行目、39行目の部分です
ここでは、グラデーションの種類と変化する方向を定義しています
createLinearGradient(x0, y0, x1, y1)
これは線形グラデーションを定義しています
引数は、グラデーションの開始点(x0, y0)と終点(x1, y1)を渡します
createRadialGradient(x0, y0, r0, x1, y1, r1)
これは円形グラデーションを定義しています
2つの円を引数として渡します
開始となる中心点(x0, y0)半径r0の円と、終点となる中心(x1, y1)半径r1の円です
どちらも、開始点から終了点へ向けて変化するグラデーションを定義しています
変化する方向を変えたい場合は16行目の部分や
var gradient2 = context2.createLinearGradient(0, 0, 0, 300);
27行目の部分
var gradient3 = context3.createLinearGradient(0, 0, 300, 300);
のように、開始点・終了点を移動させることで方向を変えることができます
基準色の配置
gradient.addColorStop(0, "rgb(255,0,0)"); gradient.addColorStop(0.5, "rgb(255, 255, 0)"); gradient.addColorStop(1, "rgb(0, 0, 255)");
これは7~9行目
ここでは、グラデーションの変化するポイントと基準となる色を指定しています
gradient.addColorStop(point, "color")
引数として、基準色の場所(0~1)と基準色を渡します
場所は0は開始点側、1が終了点側を表します
0.5とすると、丁度真ん中に基準色を置いたことになります
基準色を置くことで、その間のグラデーションを表示してくれるんですね
Canvasに描画
ここまで見てきたメソッドはすべて下書きメソッドです
(lineToやmoveToと同じですね)
Canvasにグラデーションを描画する場合は矩形や線を描画します
context.fillStyle = gradient; context.fillRect(0, 0, 300, 300);
これは22~23行目の部分
今まで定義してきたグラデーションを、fillStyleでcontextに設定します
そして、矩形や線を描画することグラデーションを描画することができます
グラデーションは、描画する色の指定などの一部ということですね
fillStyleでcontextに設定しなければ、せっかく今まで定義してきたものが使われないので注意です
このような流れでグラデーションを定義します
コードの中身が見えてきましたか?
今回はここまで
もっとこう書くと見やすいよ!のようなアドバイスがあればコメントまで


ディスカッション
コメント一覧
まだ、コメントがありません