JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

HTML5のcanvasでマウスオーバー時の画像スケーリングを実装する方法

HTML5の<canvas>要素を使うと、マウスオーバー時に画像を拡大・縮小表示するインタラクティブな演出を簡単に実装できます。本記事では、Vanilla JavaScript(フレームワークなどに依存しない素のJavaScript)を用いた具体的な実装手順を解説します。

マウス移動時の処理を実装する

まず、キャンバス上でマウスが移動した際に呼び出される関数を定義します。以下のように記述してください。

function move(e) {
    var pos = getMousePos(myCanvas, e);
    context.drawImage(img, -pos.x, -pos.y, img.width, img.height);
}

この関数では、getMousePos()を使ってキャンバス内のマウス座標を取得し、その値をもとにdrawImage()で画像を描画しています。座標にマイナスの値を渡すことで、マウスの動きに連動して画像がスケール表示される仕組みです。

イベントリスナーを登録する

次に、キャンバスに対して必要なイベントリスナーを追加します。

// 必要なイベントリスナーを追加
myCanvas.addEventListener('mouseout', display, false);
myCanvas.addEventListener('mousemove', move, false);

この設定により、マウスがキャンバス上にある間はmove()関数が実行され、キャンバスからマウスが離れたタイミングではdisplay()関数が呼び出されます。

初期表示用の関数を定義する

最後に、マウスアウト時に実行されるdisplay()関数を以下のように定義しましょう。

function display() {
    context.drawImage(img, 0, 0, img.width>>1, img.height>>1);
}

ここではビットシフト演算子(>>)を活用し、画像サイズを半分に縮小して描画しています。img.width >> 1img.width / 2と同じ結果になるため、軽量かつ高速にリサイズ処理が行えます。

まとめ

以上の手順で、マウスオーバー時に画像が拡大され、マウスアウトすると縮小表示に戻るスケーリング機能が完成します。mousemoveイベントとdrawImageメソッドを組み合わせた基本テクニックは、ギャラリーや商品画像のプレビューなど、さまざまな場面で応用できるので、ぜひ活用してみてください。

  1. 矢印キーでTkinterキャンバス上の画像を移動させる方法

    TkinterのCanvas(キャンバス)ウィジェットは、Tkinterライブラリの中でも特に汎用性の高いウィジェットの一つです。図形や画像の描画はもちろん、オブジェクトのアニメーション表現にも活用できます。Canvas上に配置した画像を動かしたい場合は、move()メソッドを使用します。このメソッドに「対象の画像」と「移動量(x, y)」を引数として渡すことで、画像を任意の方向へ移動させることができます。また、Canvas内での画像の位置を正しく追跡できるよう、画像オブジェクトはグローバル変数として宣言しておくのがポイントです。実装の流れ以下の手順に従うことで、矢印キー操作による画像の移動機

  2. 【Python】マウス操作でTkinterキャンバス上の画像を移動する方法

    TkinterのCanvas(キャンバス)ウィジェットは、Tkinterライブラリの中でも特に汎用性の高いウィジェットの一つです。図形や画像の描画、アニメーションオブジェクトの作成など、幅広い用途に活用できます。キャンバス上の画像を移動させるには、move()メソッドを使用します。move(Image, x, y)のように、対象の画像と移動先の座標を引数として渡すことで、オブジェクトを任意の方向へ動かせます。なお、画像を移動・再配置できるようにするには、画像をグローバル変数として宣言しておく必要があります。画像をキャンバス内で移動可能にする手順まず、Canvasウィジェットを定義し、画像を追加