ホバー時にHTML5キャンバスの長方形を更新する方法
ホバー時にHTML5キャンバスの長方形を更新する方法
HTML5のCanvasで描画した長方形にマウスカーソルが重なったとき(ホバー時)に、その見た目を変えて再描画する方法を紹介します。jQueryの hover() メソッドと、Canvas APIの fill() メソッドを組み合わせることで簡単に実現できます。
実装コード例
以下のコードを実行すると、キャンバス上の長方形にマウスを合わせたときに、輪郭線だけだった図形が青色で塗りつぶされます。
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
// 長方形のパスを作成(x:20、y:20、幅150、高さ100)
context.rect(20, 20, 150, 100);
context.stroke();
// ホバー時に長方形を塗りつぶす
$(canvas).hover(function(e){
context.fillStyle = "blue";
context.fill();
});
コードの解説
- getContext("2d"):キャンバスの2D描画コンテキストを取得します。以降の描画操作はすべてこのコンテキストを通じて行います。
- rect() メソッド:指定した座標とサイズで長方形のパスを作成します。引数は左から順に「x座標、y座標、幅、高さ」です。
- stroke() メソッド:作成したパスに沿って輪郭線を描画します。
- hover() メソッド:マウスカーソルが要素に乗ったタイミングで、指定した関数を実行します。
- fillStyle と fill():塗りつぶしの色を設定し、現在のパス(ここでは長方形)をその色で塗りつぶします。
注意点
fillStyle に設定する色は必ず文字列として指定してください。"blue" のようにクォートで囲まないと、JavaScriptでは未定義の変数として扱われ、意図したとおりに動作しません。
また、ホバーが外れたときに元の状態へ戻したい場合は、mouseleave イベントや clearRect() メソッドを使って再描画する処理を追加すると、より使いやすいインタラクションになります。
-
HTML5 Canvasの変換(トランスフォーム)基本解説
HTML5のCanvas APIには、変換行列(transformation matrix)を直接操作できるメソッドが用意されています。変換行列は初期状態で単位変換(identity transform)となっており、その後、各種の変換メソッドを呼び出すことで自由に調整できます。 主な変換メソッド translate(x, y):座標原点を指定した位置へ移動します。 rotate(angle):指定した角度(ラジアン)だけ描画内容を回転させます。 scale(x, y):横方向・縦方向に拡大・縮小します。 transform(a, b, c, d, e, f):現在の変換行列に、指定した行列
-
HTML5 Canvasで長方形を描画する方法をわかりやすく解説
HTML5の<canvas>タグは、JavaScriptなどのスクリプトを使ってグラフィックやアニメーションを描画するための要素です。HTML5で新たに導入されたタグであり、動的なビジュアル表現を実現するための強力な機能を提供します。canvas要素には「getContext」というDOMメソッドが用意されています。このメソッドはレンダリングコンテキストと、それに付随する描画機能一式を取得するもので、引数としてコンテキストの種類(ここでは2D描画を表す「2d」)を1つ指定します。fillRect()メソッドで長方形を描くHTML5 Canvasで長方形を描画するには、fillRec