2013-07-09 40 views
0

我有一個使用OpenTk.GLControl的程序。現在在我的聽衆身上,每當鼠標懸停到所述控件上時,說「glControl1」,我想獲得鼠標座標。如何獲取OpenTK.GLControl中的鼠標座標?

這可能嗎?示例代碼如下。

private void glControl1_MouseHover(object sender, EventArgs e) 
{ 
    // get the current mouse coordinates  
    // ......... 
} 

回答

0

我不知道,什麼是OpenTk.GLControl,但:

我正在處理Windows Phone上的刷卡事件,並做:

private void PhoneApplicationPage_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     //string to save coordinates of tap 
     TapCoordinatesXBegin = e.GetPosition(LayoutRoot).X.ToString(); 
     TapCoordinatesYBegin = e.GetPosition(LayoutRoot).Y.ToString(); 
    } 

,我不記得這樣的事件MouseHover - 也許MouseEnter?

+0

我不會OpenTk :(工作 –

2

OpenTK.GLControl繼承自System.Windows.Forms.Control。您可以使用以下代碼片段獲取鼠標位置:

private void glControl1_MouseHover(object sender, EventArgs e) 
{ 
    Control control = sender as Control; 
    Point pt = control.PointToClient(Control.MousePosition); 
} 

請參閱MSDN WinForms文檔以獲取更多信息。

+0

使用MouseMove事件,而不是這給你的地方在電子參數的鼠標指針的座標 – TomXP411

+0

感謝您指出。我到GLControl屬性! – Austin

0

問題是您使用了錯誤的事件。 WinForms中的許多UI操作會爲每個操作觸發多個事件;懸停用於彈出工具提示等內容。你沒有在Hover中獲得座標,因爲這是不必要的。

你想要的是MouseMove事件。這是用來跟蹤鼠標的位置:

private void glControl1_MouseMove(object sender, MouseEventArgs e) 
    { 
     foo = e.X; 
     bar = e.Y; 
    }