在OpenTK (c# ~. net)中获取鼠标窗口坐标

本文关键字:获取 鼠标 窗口 坐标 net OpenTK | 更新日期: 2023-09-27 18:11:41

我正在创建一个有1到许多OpenGL视图表单的GUI。现在基本工作完成了,我有一个查看器表单列表,每个表单都封装了一个OpenTK。

我需要在我拖动图标的窗口中获得实际光标位置,以便当我释放左键单击时,它将其放入该位置的GL窗口中。这是从它实际需要做的事情中简化出来的,但只是作为第一步,一旦这个可以实现,剩下的就很容易了。

现在当我使用GLControl.MousePosition。GLControl.MousePosition.Y获取光标位置,它实际上给我屏幕位置,而不是窗口中的位置。不幸的是,这对我需要做的事情不是特别有用。

我看过OpenTK.GameWindow.Mouse,这似乎在我的小测试项目中工作得很好。它获取光标在窗口中的确切位置。然而,我不能在这个项目中使用gamewindow,因为gamewindow没有GLcontrol拥有的一些更GUI表单友好的东西,如Dock, TabIndex, Paint和其他GUI相关成员。(或者至少我似乎找不到任何方法让GameWindow支持它们,如果我错了,请告诉我)

所以我真正想问的是,有没有人有一个非常好的/简单的方法让我使用OpenTK在窗体中获得光标的窗口位置。GLControl

事实上,即使它很棘手,请让我知道:)我只需要能够做到这一点!

在OpenTK (c# ~. net)中获取鼠标窗口坐标

你的问题在于OpenGL的范围之外,它只处理绘图的东西和OpenTK,它将OpenGL粘合到。net。这是Windows窗体的问题。Windows Forms有一个类Control,它有一个方法→PointToClient,你可以用它来从屏幕坐标转换到客户端坐标。如果使用OpenTK与GTK有类似的GLWidget/Widget类。