問題は、いくつかのグラフィックをフォーム(たとえば長方形)で表示していて、ポイントがフィールドを超えたときにキャプチャしたいということです。だから私はあなたの長方形のcorrrdinatesを見つけようとしますが、それは形の座標であるため、マウスの位置と一致しません。
それで、フォームやコントローラーではなく、ポイントが画面上にある画面上の座標を見つける方法があるのだろうか?
問題は、いくつかのグラフィックをフォーム(たとえば長方形)で表示していて、ポイントがフィールドを超えたときにキャプチャしたいということです。だから私はあなたの長方形のcorrrdinatesを見つけようとしますが、それは形の座標であるため、マウスの位置と一致しません。
それで、フォームやコントローラーではなく、ポイントが画面上にある画面上の座標を見つける方法があるのだろうか?
各コントロールには、変換用のPointToFooメソッドがあります。これは、目的の場所にあるオブジェクトの親から呼び出す必要があることに注意してください。
Point scrPos = this.PointToScreen(panel1.Location);
または、次のコマンドでパネルの画面座標を取得することもできます。
Point scrPos = panel1.PointToScreen(new Point(0,0));
上記の2つの例では、パネルの境界線のサイズが原因で異なる結果が得られる可能性があることに注意してください。
フォーム内で呼び出してフォームのグラフィックスオブジェクトを使用している場合this.CreateGraphics()
、長方形を描画するときに使用される座標は、フォームのクリックイベントによって返される座標とまったく同じである必要があります。
ポインタがどの座標にあるか知っていますか?を呼び出してウィンドウの座標を取得しGetWindowRect()
、マウスカーソルから上/左を引いてクライアントの座標を取得できます。
実際、それを行う機能があったことを覚えているようですが、カスタムGUIコントロールに手を出してからしばらく経ちました。