指定した座標がRectangle内か判定する (C#プログラミング)
座標が指定したRectangleの内側になるかを判定するコードを紹介します。
概要
指定した座標が、Rectangleの内側になるかの内外判定をするケースがあります。RectangleクラスにはContains()メソッドが実装されており、子のメソッドを用いると簡単にRectangleの内外判定ができます。
プログラム
UI
下図のUIを作成します。
コード
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RectangleIntersection
{
public partial class FormPtInRect : Form
{
Rectangle Rect;
public FormPtInRect()
{
InitializeComponent();
Rect = new Rectangle(280, 80, 120, 64);
}
private void FormPtInRect_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.Red);
e.Graphics.DrawRectangle(p, Rect);
}
private void FormPtInRect_MouseDown(object sender, MouseEventArgs e)
{
Point clickPoint = new Point(e.X, e.Y);
if (Rect.Contains(clickPoint) == true) {
MessageBox.Show("クリックしたポイントはRect内です。");
}
else {
MessageBox.Show("クリックしたポイントはRectの外側です。");
}
}
}
}
解説
アプリケーションの実行時にRectangleクラスを作成し矩形を準備します。
Paintイベントでフォームに矩形を描画します。
マウスでフォーム内部がクリックされた際にはMouseDownイベントが発生します。マウスでクリックされた座標がRectangleに含まれているかをContains()メソッドを用いて判定します。
判定結果のメッセージをMessageBoxで表示します。
実行結果
プロジェクトを実行します。下図のフォームが表示されます。
フォームに描画された赤の矩形の外側をマウスポインタでクリックします。矩形の外側である旨のメッセージボックスが表示されます。
フォームの矩形の内側をクリックします。座標がRectangleの内側である旨のメッセージが表示されます。
指定したPointのRectangleの内外判定が実装できました。
登録日 :2014-12-08 最終更新日 :2017-09-14