2011-10-17 90 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