【C#】座標が領域内にあるか?調べる方法

マウスをクリックした時など、任意の座標がある領域の範囲内にあるか?どうか?調べたい場合があります。

 

これを調べるには、四角形の領域の場合、Rectangleクラス(名前空間:System.Drawing)のContainsメソッドを用います。

さらに複雑な形状の領域の場合、GraphicsPath(名前空間:System.Drawing.Drawing2D)のIsVisibleメソッドを用います。

 

四角形領域の場合のコード例

bool insideFlg;

var rect = new Rectangle(2, 2, 8, 8);
for (int i = 0; i < 12; i++)
{
    insideFlg = rect.Contains(i, i);
    System.Diagnostics.Debug.WriteLine($"四角の場合:{i}, {insideFlg}");
}

実行結果

四角の場合:0, False
四角の場合:1, False
四角の場合:2, True
四角の場合:3, True
四角の場合:4, True
四角の場合:5, True
四角の場合:6, True
四角の場合:7, True
四角の場合:8, True
四角の場合:9, True
四角の場合:10, False
四角の場合:11, False

丸領域の場合のコード例

bool insideFlg;

var path = new System.Drawing.Drawing2D.GraphicsPath();
path.AddEllipse(2, 2, 8, 8);
for (int i = 0; i < 12; i++)
{
    insideFlg = path.IsVisible(i, i);
    System.Diagnostics.Debug.WriteLine($"丸の場合:{i}, {insideFlg}");
}

実行結果

丸の場合:0, False
丸の場合:1, False
丸の場合:2, False
丸の場合:3, False
丸の場合:4, True
丸の場合:5, True
丸の場合:6, True
丸の場合:7, True
丸の場合:8, True
丸の場合:9, False
丸の場合:10, False
丸の場合:11, False

 

画像処理のためのC#へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください