多语言展示
当前在线:1882今日阅读:175今日分享:29

winform中坐标系转换

在使用winform进行编程的时候,我们有的时候会遇到需要读取鼠标位置或者判断鼠标位置以及控件位置的情况,今天小编教大家使用一些小方法来实现读取鼠标位置以及控件位置,甚至判断鼠标位置是否在控件位置中等。
工具/原料
1

电脑一台

2

Visual Studio 2017

程序坐标系转为屏幕坐标系
1

首先小编这里创建一个winform程序,然后实现点击程序中的按钮,获取按钮的左上角坐标以及按钮左上角相对于屏幕来说左上角的坐标,如下图:

2

下图中是点击按钮的事件实现代码,对重要代码做出一些解释:Point p=new Point(0,0);这里创建一个坐标为(0,0)的点作为屏幕左上角的起始点p=this.button1.PointToScreen(p);这里使用Control的PointToScreen方法,将空间的坐标转化为相对于屏幕的坐标,如下图:

3

运行程序,点击按钮,可以看到鼠标左上角的坐标相对于程序为(62,76),如下图:

4

然后获取到的按钮左上角相对于屏幕的坐标为(828,480),成功将控件坐标转化到了屏幕坐标系下,如下图:

屏幕坐标系转换为程序坐标系
1

这里小编还是创建一个winform程序,然后实现点击鼠标按钮然后先获取屏幕中光标位置,然后将光标位置转化为相对程序的坐标,然后就可以判断光标位置是否在按钮中了,如下图:

2

下图中的代码就是按钮点击事件的具体实现,对其中重要的代码做出解释,Point p = Control.MousePosition;这里通过Control的MousePosition方法来获取当前光标相对于屏幕的绝对坐标p = this.PointToClient(p);这里使用Control的PointToClient方法,将当前光标的绝对坐标转化为相对于窗口的相对坐标如下图:

3

运行程序,点击按钮,首先弹出当前光标的绝对坐标的对话框,如下图:

4

然后程序会自动转换绝对坐标为当前窗口的相对坐标,可以看到当前的相对坐标为171,131,然后当前按钮的四个边界坐标也有值,然后就可以判断当前光标是否在按钮中了,因为我们使用的点击按钮事件来获取光标值,所以光标肯定在按钮边界中,如下图:

注意事项
1

个人观点,仅供参考。

2

感谢阅读。

推荐信息