如何在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继承自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?