2009-09-17 129 views
3

事情是,我有一些圖形顯示在一個窗體中,例如矩形,我想捕獲點何時通過thees字段。因此,我試圖找到這些矩形的相關信息,但是因爲它們的形式與它們的鼠標位置不匹配,查找屏幕上點的座標?

所以我不知道有什麼方法可以找到Point在屏幕上顯示的座標,而不是在窗體或控制器中?

+0

我不明白你想做什麼,你能解釋更多的圖形? – 2009-09-17 11:37:24

+0

發佈一段代碼,顯示您當前正在使用的代碼將幫助我們回答您的問題:-) – 2009-09-17 11:40:56

+0

嘗試並重新撰寫帖子,因爲艾哈邁德我不太明白。 – Cristina 2009-09-17 11:46:14

回答

7

每個控件hs PointToFoo轉換的方法。請注意,您應該從對象的父稱這是誰的位置,你想:

Point scrPos = panel1.PointToScreen(new Point(0,0)); 

注意的是,上面的兩個例子可以GVE:

Point scrPos = this.PointToScreen(panel1.Location); 

或者,你可以得到面板的屏幕座標由於面板的邊框尺寸而產生不同的結果。

+0

優秀!現在我可以使用 Point scrPos = menuItemForm.PointToScreen(mSize.Location); 通過檢測此矩形的鼠標懸停來定位矩形mSize所在的點。 – user170644 2009-09-17 12:29:43

+0

可能無法一直工作。檢查此重複的帖子:http://stackoverflow.com/questions/4768677/c-sharp-how-to-get-the-coordinates-of-a-specific-point-on-screen-not-mouseloca/20688514#20688514 – dmihailescu 2013-12-19 18:02:26

0

如果通過在表單中​​調用this.CreateGraphics()來使用圖形對象,則繪製矩形時使用的座標應該與表單上的click事件返回的座標完全相同。

0

你知道你的指針在什麼座標嗎?您可以調用GetWindowRect()來獲得窗口的座標,並從鼠標光標中減去頂部/左側以獲取客戶端座標。

我似乎記得有一個函數可以爲你做到這一點,但是自從我涉足自定義的GUI控件已經有一段時間了。