问题是我有一些以表格形式显示的图形,例如矩形,我想在点越过这些字段时捕获。所以我想我试图找到这些矩形的坐标,但由于坐标是形式的坐标,它与鼠标位置的坐标不匹配。
所以我想知道有没有办法在屏幕上找到一个点在屏幕上而不是在表单或控制器中的坐标?
问题是我有一些以表格形式显示的图形,例如矩形,我想在点越过这些字段时捕获。所以我想我试图找到这些矩形的坐标,但由于坐标是形式的坐标,它与鼠标位置的坐标不匹配。
所以我想知道有没有办法在屏幕上找到一个点在屏幕上而不是在表单或控制器中的坐标?
每个控件都使用 hs PointToFoo 方法进行转换。请注意,您应该从您想要的位置的对象的父级调用它:
Point scrPos = this.PointToScreen(panel1.Location);
或者,您可以通过以下方式获取面板的屏幕坐标:
Point scrPos = panel1.PointToScreen(new Point(0,0));
请注意,由于面板的边框大小,上述两个示例可能会给出不同的结果。
如果您通过在窗体内调用来使用窗体的图形对象this.CreateGraphics()
,那么绘制矩形时使用的坐标应该与窗体上单击事件返回的坐标完全相同。
你知道你的指针在什么坐标吗?您可以通过调用获取窗口的坐标,GetWindowRect()
并从鼠标光标中减去顶部/左侧以获取客户端坐标。
我似乎记得实际上有一个功能可以为您执行此操作,但是自从我涉足自定义 GUI 控件以来已经有一段时间了。