【问题标题】:Getting the Mouse window coordinates in OpenTK (C#~.NET)在 OpenTK (C#~.NET) 中获取鼠标窗口坐标
【发布时间】:2011-12-09 08:27:35
【问题描述】:

我正在创建一个具有 1 到多个 OpenGL 视图表单的 GUI。现在基础工作正常了,我有一个查看器表单列表,每个表单都在其设计器类中封装了一个 OpenTK.GLControl 成员。

我需要获取窗口中的实际光标位置,我将图标拖到该窗口上,以便当我释放左键单击时,它会将其放到该位置的 GL 窗口中。这与它实际需要做的事情相比有所简化,但只是第一步,一旦发生这种情况,其余的就很容易了。

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

我查看了 OpenTK.GameWindow.Mouse,这似乎在我的小测试项目中运行良好。它得到光标在窗口中的确切位置。但是,我不能在这个项目中使用游戏窗口,因为游戏窗口没有一些 GLcontrol 具有的对 GUI 形式更友好的东西,例如 Dock、TabIndex、Paint 和其他与 GUI 相关的成员。 (或者至少我似乎找不到任何方法让 GameWindow 支持它们,如果我错了,请告诉我)

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

事实上,即使它很棘手,请告诉我:) 我只需要能够做到!

【问题讨论】:

    标签: c# .net opengl opentk mouse-coordinates


    【解决方案1】:

    您的问题超出了 OpenGL 的范围,它只处理绘图的东西和将 OpenGL 粘合到 .net 的 OpenTK。这是 Windows 窗体的问题。 Windows 窗体有一个类Control 和一个方法→PointToClient,您可以使用它从屏幕坐标转换到客户端坐标。如果将 OpenTK 与 GTK 一起使用,则 GLWidget/Widget 类也类似。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      相关资源
      最近更新 更多