tanaka's Programming Memo

プログラミングについてのメモ。

505 マウス座標の取得方法

ここでマスターしたいこと

  • マウス座標の取得方法を知ること。
  • 取得した座標を利用できるようにすること。

マウス座標を表示してみる

タイマーの使い方変数型の変換で学んだ方法を利用して、100ミリ秒ごとに、ラベルにマウス座標を表示するプログラムを作成する。手順は以下の通り。

動画


505 マウス座標の取得方法 - YouTube

手順

  • 新しいプロジェクトを作成
  • 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を代入するにはどのように書けばよいだろう。

完成した時のプログラムのイメージ

f:id:am1tanaka:20141111214303g:plain

完成したら…
  • timer1のIntervalプロパティの値を20にして動かしてみよう。
  • 結果から、timer1のIntervalプロパティが何をするものかを考えてみよう。


前へ | 目次 | 次へ