如何在OpenTK.GLControl中获取鼠标坐标

本文关键字:获取 鼠标 坐标 GLControl OpenTK | 更新日期: 2023-09-27 18:21:40

我有一个使用OpenTk.GLControl的程序。现在在我的监听器上,每次鼠标悬停在所述控件上,比如"glControl1",我都想获得鼠标坐标。

这可能吗?下面的示例代码。

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

如何在OpenTK.GLControl中获取鼠标坐标

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文档。

问题是您使用了错误的事件。WinForms中的许多UI操作每个操作都会触发多个事件;悬停用于弹出工具提示等操作。您无法在Hover中获得坐标,因为这是不必要的。

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

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

我不知道什么是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?