窗體的formborderstyle可以設定以下的值,每個值導致窗體的邊框的寬度不一樣,但是可以發現的是左、右、下邊框的寬度是一樣的:
//
// 摘要:
// 指定窗體的邊框樣式。
[comvisible(true)]
public enum formborderstyle
可以通過clientsize獲取工作區的大小,即窗體除邊框外的大小
size clientsize = this.clientsize; //獲取窗體工作區的大小
int left = (this.size.width - clientsize.width) / 2; //左右的邊框長度
int top = (this.size.height - clientsize.height) - left; //下邊框和左右邊框長度一樣
各窗體模式下的邊框寬度如下:
窗體的座標,即location屬性,是窗體左上角(不是工作區的左上角)相對於螢幕而言的。螢幕左上角是原點,原點往右為x的正方向,往下為y的正方向。
將指定螢幕點的位置計算成工作區座標
control.pointtoclient(p2);
p2座標是相對於螢幕,即螢幕左上角原點(0,0)的座標;假如control相對於螢幕原點的座標為 p1;control.pointtoclient(p2) 的結果為 p2 - p1。即以p1為原點時p2的座標(座標系和窗體的一致)
ps:如果control為form時,p1為form工作區相對於原點的座標,而不是location。將指定工作區點的位置計算成螢幕座標
control.pointtoscreen(p2);
p2座標是相對於螢幕,即螢幕左上角原點(0,0)的座標;假如control相對於螢幕原點的座標為 p1;control.pointtoscreen(p2) 的結果為 p2 + p1。即以螢幕原點為原點p1和p2的疊加
ps: 如果control為form時,p1為form工作區相對於原點的座標,而不是location。
control.pointtoscreen(new point(0,0)); //獲取控制項相對於螢幕原點的絕對座標
ps:如果control為form時,是指工作區相對於螢幕的座標。form相對於螢幕的座標就是location
//control1相對於control2的座標
control2.pointtoclient(control1.pointtoscreen(new point(0,0)));
control.findform().pointtoclient(control.pointtoscreen(new point(0,0)));
各種獲取控制項座標的方法總結
最近遇到非常多需要獲取控制項在螢幕中位置的需求,用途有很多,比如一些拋物線動畫的起始點 popupwindow的顯示位置 scrollview中用於滑動跳轉到固定位置等,這裡總結一下 1.獲取螢幕的大小 windowmanager manager windowmanager getsystemser...
c winform 直角座標系
已經在winform中畫出了直角座標系,且讀取資料畫出了弧線,現在求這個弧線頂點座標並顯示在文字框中,各位大哥大姐拜託看看怎麼做,小弟初學c 多多指教。using system using system.collections.generic using system.componentmodel ...
C Winform控制項動態刪除
wpf控制項的動態刪除請參考wpf動態刪除指定型別控制項 今天在實現控制項動態刪除過程中遇到了點小trouble,就是在刪除的過程中只能刪除一半,具體 如下 foreach var control in from ctls in controlutility.getcontrols panel1 w...