C# 如何查看光标是否位于椭圆上

C# 如何查看光标是否位于椭圆上,c#,windows,forms,winforms,ellipse,C#,Windows,Forms,Winforms,Ellipse,我目前正在使用Visual Studio 2015编程一个Windows窗体应用程序。程序在开始时“生成”24个圆圈,当用户单击不同的圆圈时,这些圆圈将一个接一个地消失。问题是,当用户单击时,我不知道如何检查光标是否在椭圆上 提前谢谢 如果存储中心点和半径1,则可以检查。如果距离小于半径,则在圆边界内单击 如果您需要跟踪重叠的圆,并且只删除“顶部”上的圆,那么您还需要使用点和半径数据存储z分量 public class Circle { public int X {get; set;}

我目前正在使用Visual Studio 2015编程一个Windows窗体应用程序。程序在开始时“生成”24个圆圈,当用户单击不同的圆圈时,这些圆圈将一个接一个地消失。问题是,当用户单击时,我不知道如何检查光标是否在椭圆上


提前谢谢

如果存储中心点和半径1,则可以检查。如果距离小于半径,则在圆边界内单击

如果您需要跟踪重叠的圆,并且只删除“顶部”上的圆,那么您还需要使用点和半径数据存储z分量

public class Circle {
    public int X {get; set;}  
    public int Y {get; set;}
    public int Z {get; set;}

    public int Radius {get; set;}
}

将数据存储在
列表中。然后,您可以使用诸如
public bool Contains(int x,int y){…}
之类的方法轻松地扩展Circle类,这使得将上述算法编写为LINQ查询非常容易。

您需要将椭圆坐标存储在
列表
列表
中,并使用
GraphicsPath.IsVisible
方法执行命中测试。您还可以创建一个
eliple
类,并在该类中封装绘图和命中测试。看看这个例子:虽然圆是椭圆,但椭圆不一定是圆。那么您是在创建圆还是椭圆?@SamAxe我是在使用“FillEllipse”命令创建圆,赋予它们相同的高度和宽度值。@RezaAghaei根据Visual Studio,GraphicsPath
类型不存在。:(根据我的经验,GraphicsPath是一个极其缓慢的废话。看看链接文章末尾的
Cricle
类,你会发现它非常有用。