如何确定一个点是否在矩形内的椭圆内?
How to determine if a point is inside an ellipse that is inside a rectangle?
使用 C# 和 .NET...我想监控我的计算机屏幕上的任何像素是否变为某种颜色,但仅监控屏幕 "fixed" 区域内的像素,该区域位于形状中的一个椭圆。给定一个代表屏幕某处像素的 x,y 坐标(从 0,0 到 1919, 1079),我如何判断它是否在屏幕上的椭圆内?
具体来说,假设我的屏幕是 1920 宽 x 1080 像素高。椭圆宽 1100 像素,高 700 像素,椭圆顶部距屏幕顶部 200 像素,椭圆最左侧距屏幕左边缘 350 像素。
鉴于上述情况,有人可以提供一个 C# 中的示例方法吗?如果该点落在该椭圆内,则 returns 为真,否则为假?我在网上找到了一些关于如何检测一个点是否落在椭圆内的示例,但不确定如何将其与我的需要联系起来。
也作为问题的第二部分 - 在不久的将来,除了这个椭圆之外,我可能需要定义屏幕的多个区域。因此,例如,如果点落在椭圆内或屏幕的其他区域内,则可能是椭圆形或方形或多边形。请不要仅仅为了这部分而使代码片段过于复杂——主要问题只集中在椭圆上。但是如果让它支持椭圆以及屏幕的另一个其他定义区域相对容易,那也很好知道。预先感谢您的帮助。
请在示例和解释中尽可能详细,因为我是一名新手程序员,其中大部分内容都超出了我的理解范围。
根据椭圆的长短算出方程
轴, a=1100/2=550 和 b=700/2=350 在你的情况下,它的中心坐标是
(cx,cy)=(900,550)。然后使用椭圆方程:
如果(x,y)满足
- (x-cx)^2 / a^2 + (y-cy)^2 / b^2 <= 1
那么 (x,y) 在椭圆中。
就用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...
}
使用 C# 和 .NET...我想监控我的计算机屏幕上的任何像素是否变为某种颜色,但仅监控屏幕 "fixed" 区域内的像素,该区域位于形状中的一个椭圆。给定一个代表屏幕某处像素的 x,y 坐标(从 0,0 到 1919, 1079),我如何判断它是否在屏幕上的椭圆内?
具体来说,假设我的屏幕是 1920 宽 x 1080 像素高。椭圆宽 1100 像素,高 700 像素,椭圆顶部距屏幕顶部 200 像素,椭圆最左侧距屏幕左边缘 350 像素。
鉴于上述情况,有人可以提供一个 C# 中的示例方法吗?如果该点落在该椭圆内,则 returns 为真,否则为假?我在网上找到了一些关于如何检测一个点是否落在椭圆内的示例,但不确定如何将其与我的需要联系起来。
也作为问题的第二部分 - 在不久的将来,除了这个椭圆之外,我可能需要定义屏幕的多个区域。因此,例如,如果点落在椭圆内或屏幕的其他区域内,则可能是椭圆形或方形或多边形。请不要仅仅为了这部分而使代码片段过于复杂——主要问题只集中在椭圆上。但是如果让它支持椭圆以及屏幕的另一个其他定义区域相对容易,那也很好知道。预先感谢您的帮助。
请在示例和解释中尽可能详细,因为我是一名新手程序员,其中大部分内容都超出了我的理解范围。
根据椭圆的长短算出方程 轴, a=1100/2=550 和 b=700/2=350 在你的情况下,它的中心坐标是 (cx,cy)=(900,550)。然后使用椭圆方程: 如果(x,y)满足
- (x-cx)^2 / a^2 + (y-cy)^2 / b^2 <= 1
那么 (x,y) 在椭圆中。
就用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...
}