winform中坐标系转换的问题,获取某点在屏幕中的绝对位置等
坐标系转换的问题,控件有控件的坐标系,屏幕有屏幕的坐标系。当然这两者是可以非常简便的进行转换的。如果要将Control1(例如Label1或者Button1)上的点(x,y)转换成屏幕上的点(x1,y1),那么就调用Control1.PointToScreen。反之,如果要将屏幕的(x1,y1)变成控件上的(x,y),那么就调用Control1.PointToClient。
eg1:求Button1的左上角在屏幕上的位置。
Point
p = new Point(0,0); // 0,0 是左上角
p =
Button1.PointToScreen(p); // p.X, p.Y
是Button1左上角在屏幕上的坐标
eg2:求鼠标当前位置是否在Button1内。
Point
p = Control.MousePosition;
p =
Button1.PointToClient(p);
if (p.X < Button1.Left || p.X
> Button1.Right ||
p.Y < Button1.Top || p.Y >
Button1.Bottom)
System.Diagnostic.Debug.Writeline( "not in
button1 "); // 不在Button1内
// else
在Button1内。
其他相关内容参见Control.RectangleToClient ,
Control.RectangleToScreen
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。