2010年6月22日火曜日14:37:00

マウスポインタがどのディスプレイ上にあるのか メモメモ...φ(._.*)y-。o0

マウスポインタがマルチディスプレイ上にて、どのディスプレイにあるのかを求める。当たり判定をつかって求める。長方形と点の当たり判定。

        /// <summary>
        /// 長方形と点の当たり判定;
        /// 境界線も含める
        /// </summary>
        /// <param name="rectangle_point">長方形の左上の角の位置</param>
        /// <param name="rectangle_size">長方形のサイズ</param>
        /// <param name="main_point">点の位置</param>
        /// <returns>長方形と点が接触しているかどうか</returns>
        private bool DetectCollisionRectangle ( Point rectangle_point, Size rectangle_size, Point main_point )
        {
            if ( rectangle_point.X <= main_point.X
                && rectangle_point.Y <= main_point.Y
                && rectangle_point.X + rectangle_size.Width >= main_point.X
                && rectangle_point.Y + rectangle_size.Height >= main_point.Y )
                return true;

            return false;
        }

ディスプレイの位置とサイズを長方形とする。

                if ( DetectCollisionRectangle(
                        Screen.AllScreens[i].Bounds.Location,
                        Screen.AllScreens[i].Bounds.Size,
                        Cursor.Position ) )
                {
                    // 省略
                }

あとはてきとーに。

マウスポインタ以外にも、長方形と長方形の当たり判定つかえば、ウィンドウがあるディスプレイを求めることもできる。

当たり判定つかってるけど、もっと簡単に求められる方法とかないのかね。ないなら仕方ないけど。

top