ここでマスターしたいこと
- マウス座標の取得方法を知ること。
- 取得した座標を利用できるようにすること。
マウス座標を表示してみる
タイマーの使い方と変数型の変換で学んだ方法を利用して、100ミリ秒ごとに、ラベルにマウス座標を表示するプログラムを作成する。手順は以下の通り。
手順
- 新しいプロジェクトを作成
- LabelとTimerを1つずつ配置する
- timer1をクリックして、Enabledプロパティをtrueにする
- timer1をダブルクリックして、コードを開く
- 開いた場所に以下のプログラムを入力する
private void timer1_Tick(object sender, EventArgs e) { Point mpos = PointToClient(MousePosition); label1.Text = "" + mpos.X + "," + mpos.Y; // label1.Text = mpos.X + "," + mpos.Y; // VisualStudio2013以降はこれでも動作する }
- プログラムを実行して、マウスを動かして動作を確認しよう。
以下を確認してみよう
- 座標が0,0になるのはどこか?
- Xが大きくなるのは、左と右のどちらに移動させた時か?
- Yが大きくなるのは、上と下のどちらに移動させた時か?
まとめ
- 以下の1行は、マウス座標をmposという変数に取得するプログラムである。
Point mpos = PointToClient(MousePosition);
- mpos.Xはint型の変数で、マウスのX座標が入っている。
- mpos.Yはint型の変数で、マウスのY座標が入っている。
演習
上で作成したプログラムを改造して、マウス座標をlabel1が追うようにしてみよう。
ヒント
- label1のX座標はlabel1.Left。
- label1のY座標はlabel1.Top。
- マウスのX座標はmpos.X。
- マウスのY座標はmpos.Y。
- 変数の代入は、=でできる。label1.Text = "あいうえお";で、label1.Textに"あいうえお"が代入される。では、label1.Leftにmpos.Xを代入するにはどのように書けばよいだろう。