2011-10-17 91 views
2

我创建了一个具有1到多个OpenGL视图窗体的GUI。现在基本工作正常,我有一个Viewer Forms列表,每个封装一个OpenTK.GLControl成员在它的设计器类中。在OpenTK中获取鼠标窗口坐标(C#〜.NET)

我需要在拖动图标的窗口中获取实际的光标位置,这样当我释放左键单击时,它会将它放入该位置的GL窗口。这是从实际需要做的事情中简化出来的,但只是第一步,一旦发生这种情况,剩下的事情就会很容易实现。

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

我看过OpenTK.GameWindow.Mouse,这似乎在我的小测试项目中工作得很好。它获得光标在窗口中的确切位置。然而,我不能在这个项目中使用gamewindow,因为gamewindow没有GLcontrol所具有的更多GUI形式友好的东西,例如Dock,TabIndex,Paint和其他GUI相关成员。 (或者至少我似乎无法找到GameWindow来支持它们,请告诉我是否我错了)

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

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

回答

2

你的问题不在OpenGL的范围之内,它只涉及绘制OpenGL和OpenGL的OpenTK。这是Windows窗体的问题。 Windows窗体有一个类Control与方法→PointToClient,您可以使用它来从屏幕转换到客户端坐标。如果在GTK中使用OpenTK,则类似于GLWidget/Widget类。

+0

感谢队友,工作过一种享受! – Garviel