一、概述
從數學角度講,Point是一個二維矢量,包含兩個公共整型屬性,屬性用大寫X和Y(c#中公共屬性一般約定以大寫字母開頭)。當坐標不是整數值是float時,用PointF代替Point使用。
常用的Size和Point結構其實相同,也有兩個整型屬性Width和Height,也有變體SizeF,但兩者使用方式不同。Point是說明實體在什么地方,而Size用於說明實體多大,它們之間可以顯示轉換。一個Point和一個Size可以組成一個Rectangle。另外Point和Size可以進行加減運算:point-size=point;size+size=size;但是point+point (是錯誤的),Point相加會認為沒有意義。
在winform 中的坐標系主要分為三類:
1. 一類是屏幕坐標系,以顯示屏左上角為(0,0)點的坐標,橫坐標從左到右增加,縱坐標從上到下增加。
2. 第二類是窗體坐標系,以winform窗體左上角為(0,0)點,橫坐標從左到右增加,縱坐標從上到下增加。
3. 第三類是窗體控件坐標系,以該控件的左上角為(0,0)點,橫坐標從左到右增加,縱坐標從上到下增加。
並提供了這三類坐標相互轉換的方法,如PointToClient()、PointToScreen()等。
二、鼠標在窗口中的坐標;
鼠標事件中,鼠標位置使用的是第二類的窗口坐標系。可以使用PointToScreen()方法將鼠標坐標轉換為屏幕坐標系。
例:
Point p = this.PointToScreen(new Point(e.X, e.Y));
三、坐標合成:Point.Offset(Point p)
可以將兩個point坐標進行合成