Я создаю приложение WPF, в котором отображаются некоторые 3D-объекты, и представление должно иметь возможность панорамирования и вращения. Для этого я использую HelixViewport3D из пакета HelixToolkit NuGet, библиотеки HelixToolkit.Wpf. Вид следует вращать, удерживая колесо мыши и перемещая мышь. Я использую левый щелчок для панорамирования, а правый щелчок для отображения всплывающих подсказок объектов в представлении.
Фрагмент .xaml для области просмотра:
<helix:HelixViewport3D x:Name="viewport" ClipToBounds="True" ShowViewCube="False">
<helix:HelixViewport3D.Camera>
<PerspectiveCamera Position="3 2 6" LookDirection="0 -2 -3"></PerspectiveCamera>
</helix:HelixViewport3D.Camera>
...
..
.
В конструкторе MainWindow:
viewport.RotateGesture = new MouseGesture(MouseAction.MiddleClick);
viewport.PanGesture = new MouseGesture(MouseAction.LeftClick);
Это панорамирует камеру, когда я удерживаю колесико мыши, а не вращаю его. Панорамирование по левому клику работает нормально.
Если я использую MouseAction.WheelClick
вместо MouseAction.MiddleClick
, то прокрутка колесика мыши инициирует вращение, когда я перемещаю мышь, как мне бы хотелось, когда я удерживаю колесико, и прекращает отслеживать мышь и вращаться только тогда, когда я нажимаю колесико мыши. Это также удаляет функцию масштабирования, поскольку она явно перезаписывается этим новым жестом. Удерживая колесико и перемещая мышь, камера по-прежнему перемещается.
Если я использую MouseAction.RightClick
, он прекрасно работает с правым щелчком мыши, но, как я уже сказал, эту функцию необходимо реализовать с помощью щелчка колесика мыши, а не правого щелчка.
Примечание. Удерживая колесо мыши, ВСЕГДА поворачивайте камеру.
Есть ли способ повернуть камеру с помощью колесика мыши, как это было задумано?
Еще одна вещь, которая, казалось бы, не связана с моей текущей проблемой, но очень странная, когда я дважды щелкаю колесиком мыши, независимо от жестов, камера прыгает в какое-то странное место и смещается в неудобный угол обзора. Он всегда перемещается в одно и то же положение и под одним и тем же углом, независимо от того, где он находился в момент двойного щелчка колеса. Хотя не уверен, что это имеет отношение к моей проблеме.