目次

Web検索はbingがおすすめ!

指定した座標が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の内外判定が実装できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2014-12-08
iPentec all rights reserverd.