2013-07-09 3 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 запускают несколько событий за действие; Hover используется для таких вещей, как всплывающие подсказки. Вы не получаете координаты в Hover, потому что это не нужно.

Что вы хотите, это событие MouseMove. Это используется для отслеживания положения мыши:

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