形状の方程式がわかっている場合は、マウスが形状領域の内側にあるか外側にあるかを計算できます。形状が、幾何学的方程式が比較的単純な直線または円(楕円)で構成されている場合、これは簡単であることに注意してください。たとえば、形状がx座標とy座標(10,10)、(50,10)、および(30,50)の三角形である場合、2点の線の方程式を使用して線の方程式を導出する必要があります。
y-y1 = ((y2-y1)/(x2-x1))*(x-x1)
三角形の線の方程式は次のようになります。
y=1
y=2*x-10
y=-2*x+110
その三角形をいくつかのキャンバスに描画する必要があります。たとえば、withborderに描画しPictureBox
ますFixedSingle
。Paint
イベントハンドラーを追加します
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Point[] p = new Point[3];
p[0] = new Point(10,10);
p[1] = new Point(50,10);
p[2] = new Point(30,50);
e.Graphics.DrawLines(Pens.Black, p);
e.Graphics.FillPolygon(Brushes.Red, p);
}
MouseMove
のイベントハンドラーを追加する必要がありますPictureBox
bool inside = false;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Y > 10 && e.Y < 2 * e.X - 10 && e.Y < -2 * e.X + 110)
{
if (!inside)
{
inside = true;
HandleMouseEnter();
}
}
else
inside = false;
}
void HandleMouseEnter()
{
MessageBox.Show("Mouse inside");
}
ステートメントではif
、マウスカーソルが三角形内にあるかどうか(C#の座標原点は左上隅にありますが、実際のジオメトリに似ていることに注意してください)。これHandleMouseEnter
は、マウスの入力を処理するメソッドです。
任意の形状に対して同様のアプローチを使用できますが、それを説明するジオメトリ方程式が必要です。