YU2TA7KA's BLOG

派生開発、組み込み開発周りのこと。

C#でマウスで画像を移動、拡大縮小し、背景画像に重ねて表示する

はじめに

C#で「マウスで画像を移動、拡大縮小し、背景画像に重ねて表示する」機能を実装しました。パワーポイントなどのMS Officeでは当然実装されている機能です。

f:id:yuji-tanaak:20190203150109j:plain
オブジェクトを移動させて重ねて表示する

実装手順

1. 参考1.より、ある画像に対してマウス操作*1できるようにします。サンプルコードも用意してくれていますので、それをベースにしても良いです。ただし、画像はメニューから呼び出してセットする仕様です。予め画像をセットしておきたい場合は参考3.より、画像のファイルパスを設定するようにします。

2. 参考2.より背景画像を追加し、レイヤー機能で後ろ側に配置するように設定します。また、透過処理も行います。

手順1でマウス操作できるようにした画像は、手順2ではpictureBox2 として扱います。pictureBox1が背景画像です。
pictureBox2にマウス操作を実装するため、下記のようなコードをForm初期化時に実装します。
pictureBox2はGUIレイアウト上には設置しないため、マウスホイールのようにソースコードでの設定が必要です。

//マウスイベントの追加
this.pictureBox2.MouseDown
       += new System.Windows.Forms.MouseEventHandler(this.pictureBox2_MouseDown);            
this.pictureBox2.MouseUp
       += new System.Windows.Forms.MouseEventHandler(this.pictureBox2_MouseUp);            
this.pictureBox2.MouseMove
       += new System.Windows.Forms.MouseEventHandler(this.pictureBox2_MouseMove);          
this.pictureBox2.MouseWheel
       += new System.Windows.Forms.MouseEventHandler(this.pictureBox2_MouseWheel);          

おわりに

将来の自分用へのざっくり適当な開発メモです。


*1:移動、拡大縮小