使用C#和.NET ...我想监视计算机屏幕上的任何像素是否变为某种颜色,但只能监视"固定"屏幕的区域,呈椭圆形。给定一个代表屏幕某处像素的x,y坐标(从0到1919,1079)如何判断它是否在屏幕上的椭圆内?
特别让我们说我的屏幕是1920宽x 1080像素高。并且椭圆宽1100像素,高700像素,椭圆的顶部从屏幕的最顶部开始200像素,椭圆的最左边从屏幕的左边缘开始350像素。
鉴于上述情况,有人可以在C#中提供一个采用Point的示例方法,如果该点在此椭圆内,则返回true,否则返回false?我在网上找到了一些关于如何检测一个点是否在椭圆内的例子,但不确定如何根据我的需要将其与此相关联。
同样作为问题的第二部分 - 在不久的将来,除了这个椭圆之外,我可能还需要定义屏幕的多个区域。因此,例如,如果Point落入椭圆内或屏幕的其他区域内,可以是椭圆形或乡绅或多边形。请不要为此部分过度复杂化代码片段 - 主要问题只是关注椭圆。但是,如果它相对容易使它支持椭圆以及屏幕的另一个其他定义的区域,那也是很好的。提前感谢您的帮助。
请在示例和说明中详细说明,因为我是一名新手程序员,其中很多都是我的头脑。
答案 0 :(得分:1)
根据椭圆的主要和次要来计算椭圆的等式 在您的情况下,轴,a = 1100/2 = 550和b = 700/2 = 350,其中心坐标为 (CX,CY)=(900550)。然后使用椭圆方程: 如果(x,y)满足
然后(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...
}