如何在OpenTK.GLControl中获得鼠标坐标?

时间:2013-07-09 06:10:28

标签: c# opentk

我有一个使用OpenTk.GLControl的程序。现在在我的监听器上,每当鼠标悬停到所述控件时,说“glControl1”,我想得到鼠标坐标。

这可能吗?示例代码如下。

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

3 个答案:

答案 0 :(得分: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文档。

答案 1 :(得分: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?

答案 2 :(得分:0)

问题是您使用的是错误的事件。 WinForms中的许多UI操作会触发每个操作的多个事件;悬停用于弹出工具提示之类的东西。你没有在Hover中获得坐标,因为它是不必要的。

你想要的是MouseMove事件。这用于跟踪鼠标位置:

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