Получение координат окна мыши в OpenTK (C # ~ .NET) - PullRequest
2 голосов
/ 17 октября 2011

Я создаю графический интерфейс, который имеет от 1 до многих форм представления OpenGL.Теперь основы работают, у меня есть список форм просмотра, и каждый из них инкапсулирует член OpenTK.GLControl в своем классе конструктора.

Мне нужно получить фактическую позицию курсора в окне, на которое я перетаскиваю значок, чтобычто, когда я отпускаю левый щелчок, он помещает его в окно GL в этом месте.Это упрощено от того, что на самом деле нужно сделать, но только в качестве первого шага, когда это может произойти, все остальное будет легко.

Теперь, когда я использую GLControl.MousePosition.X, GLControl.MousePosition.Y дляполучить позицию курсора, это фактически дает мне положение экрана, а не положение в окне.К сожалению, это не особенно полезно для того, что мне нужно сделать.

Я посмотрел на OpenTK.GameWindow.Mouse, и это, кажется, работает очень хорошо в моих маленьких тестовых проектах.Он получает точную позицию курсора в окне.Тем не менее, я не могу использовать игровое окно в этом проекте, потому что у игрового окна нет некоторых более дружественных по отношению к графическому интерфейсу вещей, которые есть у GLcontrol, таких как Dock, TabIndex, Paint и других связанных с графическим интерфейсом членов.(или, по крайней мере, я так или иначе не могу найти способ для их поддержки GameWindow, дайте мне знать, если я ошибаюсь)

Так что я действительно спрашиваю, есть ли у кого-нибудь действительнохороший / простой способ для меня получить положение окна курсора в форме, используя OpenTK.GLControl

На самом деле, даже если это сложно, пожалуйста, дайте мне знать :) Мне просто нужно это сделать!

1 Ответ

2 голосов
/ 17 октября 2011

Ваша проблема выходит за рамки OpenGL, который имеет дело только с материалами для рисования и OpenTK, который приклеивает OpenGL к .net. Это проблема Windows Forms. В Windows Forms есть класс Control с методом → PointToClient , который можно использовать для преобразования с экрана в клиентские координаты. При использовании OpenTK с GTK аналогично для классов GLWidget / Widget.

...