winform中座標系轉換的問題

2021-08-15 06:16:30 字數 1233 閱讀 7083

座標系轉換的問題,控制項有控制項的座標系,螢幕有螢幕的座標系。當然這兩者是可以非常簡便的進行轉換的。如果要將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內。

例子:擷取影象並放大。

#region 將截圖,然後填充

var num = 200;

var baseimage = new bitmap(num, num);

graphics g = graphics.fromimage(baseimage);

system.drawing.size si = new size() ;

var controltoscreen = control1.pointtoscreen(new point(0, 0));

g.copyfromscreen(controltoscreen, new point(0, 0), si);

g.dispose();

this.panelcontent.controls.clear();

var picturebox = new picturebox() ;

this.panelcontent.controls.add(picturebox);

this.panelcontent.refresh();

#endregion

winform的座標系

1 winform的座標系 常用的size和point結構其實相同,也有兩個整型屬性width 和height,也有變體sizef,但兩者使用方式不同。point是 說明實體在什麼地方,而size用於說明實體多大,它們之間 可以顯示轉換。乙個point和乙個size可以組成乙個 rectangle。...

QT中座標系轉換

控制項座標系轉全域性座標系qpoint qwidget maptoglobal const qpoint pos const例 原始碼 qlineedit lineedit lineedit.setgeometry 100,100,200,100 qdebug widget lineedit.rec...

座標系轉換

根據halcon的演算法,設座標系1 影象 的點 px,py 座標系2 世界 的點為 qx,qy 則 qx px qy hommat2d py 1 1 其中 hommat2d為乙個3乘3的矩陣,且第三行為 0,0,1 1 0 tx cos phi sin phi 0 1 sin theta 0 sx...