2011-10-17 344 views
2

1から数多くのOpenGLビューフォームを持つGUIを作成しています。基本は機能しています。私はビューアフォームのリストを持っていて、それぞれはデザイナクラスにOpenTK.GLControlメンバをカプセル化しています。OpenTKでマウスウィンドウ座標を取得する(C#〜.NET)

アイコンをドラッグするウィンドウ内の実際のカーソル位置を取得する必要があります。これにより、左クリックを解除すると、その位置のGLウィンドウにドロップされます。これは、実際に行う必要があるから単純化されますが、最初のステップとして、これが起こると、残りは簡単に来るでしょう。

GLControl.MousePosition.X、GLControl.MousePosition.Yを使用してカーソル位置を取得すると、実際にはウィンドウ内の位置ではなく、画面の位置がわかります。残念ながら、これは特に必要なことではありません。

私はOpenTK.GameWindow.Mouseを見てきました。これは私の小さなテストプロジェクトではうまくいくようです。ウィンドウ内のカーソルの正確な位置を取得します。しかし、gamewindowには、Dock、TabIndex、Paint、その他のGUI関連のメンバーなど、GLcontrolが持っているよりGUIのようなフレンドリーなものがいくつかあるため、このプロジェクトではgamewindowを使用できません。 (もしかしたら、少なくとも私はGameWindowがそれらをサポートするための方法を見つけることができないかもしれません。私が間違っていると私に知らせてください)

だから私が本当に頼んでいるのは、 OpenTK.GLControlを使用してフォームのカーソルのウィンドウ位置を取得する簡単な方法

実際、それが難しい場合でも私に教えてください:)私はそれを行うことができる必要があります!

答えて

2

あなたの問題は、OpenGLをOpenGLとグルーミングするOpenTKを扱うOpenGLの範囲外です。 Windowsフォームの問題です。 Windowsフォームにはのメソッド→PointToClientがあり、これを使用して画面からクライアントの座標に変換できます。 GTKでOpenTKを使用している場合、GLWidget/Widgetクラスでも同様です。

+0

ありがとうございました。 – Garviel

関連する問題