2009-09-17 135 views
3

事情是,我有一些图形显示在一个窗体中,例如矩形,我想捕获点何时通过thees字段。因此,我试图找到这些矩形的相关信息,但是因为它们的形式与它们的鼠标位置不匹配,查找屏幕上点的坐标?

所以我不知道有什么方法可以找到Point在屏幕上显示的坐标,而不是在窗体或控制器中?

+0

我不明白你想做什么,你能解释更多的图形? – 2009-09-17 11:37:24

+0

发布一段代码,显示您当前正在使用的代码将帮助我们回答您的问题:-) – 2009-09-17 11:40:56

+0

尝试并重新撰写帖子,因为艾哈迈德我不太明白。 – Cristina 2009-09-17 11:46:14

回答

7

每个控件hs PointToFoo转换的方法。请注意,您应该从对象的父称这是谁的位置,你想:

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

注意的是,上面的两个例子可以GVE:

Point scrPos = this.PointToScreen(panel1.Location); 

或者,你可以得到面板的屏幕坐标由于面板的边框尺寸而产生不同的结果。

+0

优秀!现在我可以使用 Point scrPos = menuItemForm.PointToScreen(mSize.Location); 通过检测此矩形的鼠标悬停来定位矩形mSize所在的点。 – user170644 2009-09-17 12:29:43

+0

可能无法一直工作。检查此重复的帖子:http://stackoverflow.com/questions/4768677/c-sharp-how-to-get-the-coordinates-of-a-specific-point-on-screen-not-mouseloca/20688514#20688514 – dmihailescu 2013-12-19 18:02:26

0

如果通过在表单中​​调用this.CreateGraphics()来使用图形对象,则绘制矩形时使用的坐标应该与表单上的click事件返回的坐标完全相同。

0

你知道你的指针在什么坐标吗?您可以调用GetWindowRect()来获得窗口的坐标,并从鼠标光标中减去顶部/左侧以获取客户端坐标。

我似乎记得有一个函数可以为你做到这一点,但是自从我涉足自定义的GUI控件已经有一段时间了。