web-dev-qa-db-ja.com

クリック時に画像ボックスのマウス座標を読み取る

画像が読み込まれた画像ボックスがあり、画像をクリックしたときに場所(画像ボックス内のx、yなど)を読み取りたい。これは可能ですか?さらに、マウスオーバーしたときにこれらの座標(ポイント)を読み取ることはできますか?

与えられたイベント(マウスクリックとマウスオーバー)を使用する必要があることは知っていますが、マウスポインターがたまたまある座標を読み取る方法がわかりません。

9
Razvan

他の答えは正しいですが、私はそれに私のポイントを追加さ​​せてください。この目的のために、MouseClickまたはMouseOverイベントをフックする必要があることを指摘しました。実際には、Coordinatesを取得するためにこれらのイベントをフックする必要はありません。Coordinatesイベント自体でClickを取得できます。

private void pictureBox1_Click(object sender, EventArgs e)
{
    MouseEventArgs me = (MouseEventArgs)e;
    Point coordinates = me.Location;
}

上記のコードは、Clickイベントのe引数がMouseEventArgsをラップしているため、機能します。キャストして使用するだけです。

25

X座標とY座標は次のように取得できます。

 this.Cursor = new Cursor(Cursor.Current.Handle);

  int xCoordinate = Cursor.Position.X;
  int yCoordinate = Cursor.Position.Y;

画像ボックス内の座標を取得する場合は、次のコードを使用します。

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
    int xCoordinate = e.X;
    int yCoordinate = e.Y;
}
5
Kurubaran

私は答えを要約します:

MouseClickMouseUp、およびその他の多くのイベントには、マウスのMouseEventArgsを含むLocationがあります。

MouseHoverにはありますが、MouseEventArgsがないため、カーソルの位置が必要な場合は、Coderの例を使用してください。

  private void Form1_MouseHover(object sender, EventArgs e)
  {
     this.Cursor = new Cursor(Cursor.Current.Handle);

     int xCoordinate = Cursor.Position.X;
     int yCoordinate = Cursor.Position.Y;
  }
4

MouseUpイベントをフックして、MouseEventArgsから場所を取得するのはどうですか?

このような:

private void pictureBox_MouseUp(object sender, MouseEventArgs e)
{
    Point mousePointerLocation = e.Location;
}
1
jmelhus