C# 在屏幕上查找点的坐标?

C# 在屏幕上查找点的坐标?,c#,graphics,coordinates,point,C#,Graphics,Coordinates,Point,问题是我有一些图形以一种形式显示,例如矩形,我想在点越过这些字段时捕捉。所以我想我试着找到矩形的对应关系,但由于它们是形状中的坐标,所以它们与鼠标位置不匹配 因此,我想知道是否有一种方法可以找到屏幕上的点在屏幕上的坐标,而不是在窗体或控制器中的坐标?如果您通过在窗体内调用this.CreateGraphics()为窗体使用图形对象,然后,绘制矩形时使用的坐标应与表单上单击事件返回的坐标完全相同。您知道指针所在的坐标吗?您可以通过调用GetWindowRect()获取窗口的坐标,并从鼠标光标中减去

问题是我有一些图形以一种形式显示,例如矩形,我想在点越过这些字段时捕捉。所以我想我试着找到矩形的对应关系,但由于它们是形状中的坐标,所以它们与鼠标位置不匹配


因此,我想知道是否有一种方法可以找到屏幕上的点在屏幕上的坐标,而不是在窗体或控制器中的坐标?

如果您通过在窗体内调用
this.CreateGraphics()
为窗体使用图形对象,然后,绘制矩形时使用的坐标应与表单上单击事件返回的坐标完全相同。

您知道指针所在的坐标吗?您可以通过调用
GetWindowRect()
获取窗口的坐标,并从鼠标光标中减去上/左键以获取客户端坐标


我似乎记得实际上有一个函数可以为您实现这一点,但自从我涉足定制GUI控件以来,已经有一段时间了。

每个控件都有用于转换的指向oo方法。请注意,您应该从对象的父对象调用它,该对象是您想要的位置:

Point scrPos = this.PointToScreen(panel1.Location);
或者,您可以通过以下方式获取面板的屏幕坐标:

Point scrPos = panel1.PointToScreen(new Point(0,0));

请注意,由于面板的边框大小,上述两个示例可能会产生不同的结果。

我不明白您想做什么,您能更形象地解释一下吗?发布一段显示您当前使用的代码将帮助我们回答您的问题:-)尝试重新编写帖子,因为Ahmed我不太明白。太好了!现在我可以使用Point scrPos=menuItemForm.PointToScreen(mSize.Location);要定位矩形mSize所在的点以及通过检测鼠标悬停此矩形的位置,可能无法始终工作。检查此重复帖子: