2

1つから多数のOpenGLビューフォームを持つGUIを作成しています。これで基本が機能しました。ビューアフォームのリストがあり、それぞれがOpenTK.GLControlメンバーをそのデザイナークラスにカプセル化しています。

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

GLControl.MousePosition.X、GLControl.MousePosition.Yを使用してカーソル位置を取得すると、ウィンドウ内の位置ではなく、実際には画面位置が表示されます。残念ながら、これは私がしなければならないことには特に役立ちません。

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

だから私が本当に求めているのは、OpenTK.GLControlを使用してカーソルのウィンドウ位置をフォームで取得するための本当に素晴らしい/簡単な方法を誰かが持っているかどうかです

実際、それがトリッキーであっても、私に知らせてください:)私はそれができる必要があります!

4

1 に答える 1

2

あなたの問題は、OpenGLを.netに接着するOpenTKと描画のみを扱うOpenGLの範囲外にあります。Windowsフォームの問題です。Windows フォームには、画面からクライアント座標に変換するために使用できるControlメソッド→PointToClientを持つクラスがあります。GTK で OpenTK を使用する場合、GLWidget/Widget クラスでも同様です。

于 2011-10-17T14:43:03.623 に答える