如何确定一个点是否在矩形内的椭圆内?

时间:2017-04-16 21:29:47

标签: c# .net geometry drawing shape

使用C#和.NET ...我想监视计算机屏幕上的任何像素是否变为某种颜色,但只能监视"固定"屏幕的区域,呈椭圆形。给定一个代表屏幕某处像素的x,y坐标(从0到1919,1079)如何判断它是否在屏幕上的椭圆内?

特别让我们说我的屏幕是1920宽x 1080像素高。并且椭圆宽1100像素,高700像素,椭圆的顶部从屏幕的最顶部开始200像素,椭圆的最左边从屏幕的左边缘开始350像素。

鉴于上述情况,有人可以在C#中提供一个采用Point的示例方法,如果该点在此椭圆内,则返回true,否则返回false?我在网上找到了一些关于如何检测一个点是否在椭圆内的例子,但不确定如何根据我的需要将其与此相关联。

同样作为问题的第二部分 - 在不久的将来,除了这个椭圆之外,我可能还需要定义屏幕的多个区域。因此,例如,如果Point落入椭圆内或屏幕的其他区域内,可以是椭圆形或乡绅或多边形。请不要为此部分过度复杂化代码片段 - 主要问题只是关注椭圆。但是,如果它相对容易使它支持椭圆以及屏幕的另一个其他定义的区域,那也是很好的。提前感谢您的帮助。

请在示例和说明中详细说明,因为我是一名新手程序员,其中很多都是我的头脑。

2 个答案:

答案 0 :(得分:1)

根据椭圆的主要和次要来计算椭圆的等式 在您的情况下,轴,a = 1100/2 = 550和b = 700/2 = 350,其中心坐标为 (CX,CY)=(900550)。然后使用椭圆方程: 如果(x,y)满足

  • (x-cx)^ 2 / a ^ 2 +(y-cy)^ 2 / b ^ 2 <= 1

然后(x,y)在椭圆中。

答案 1 :(得分:1)

只需使用GraphicsPath.IsVisible()?...

System.Drawing.Drawing2D.GraphicsPath Ellipse = new System.Drawing.Drawing2D.GraphicsPath();
Ellipse.AddEllipse(350, 200, 1100, 700);

Point pt = new Point(x, y); // get your point from somewhere
if (Ellipse.IsVisible(pt)) // test to see if the point is contained by the ellipse
{
    // ...do something in here...
}