WPF与3D 模型(二)实现鼠标的视角控制

用第三种方法成功导入了我们的模型,但似乎除了显示这一个方向上的固定视角,其他啥也做不了。
那我们在方法三的基础上,做一些改动,使我们的视角可以随著鼠标点击滑动进行一个转动,就如solidworks里面那样。

步骤:

  1. 安装两个tool box
  2. 修改xaml代码
  3. 在后台代码添加鼠标控制对象
  4. 修正旋转点

1.安装两个tool box
点击 项目——管理Nuget程序包
WPF与3D 模型(二)实现鼠标的视角控制_第1张图片
搜索Helix,安装前两个包
WPF与3D 模型(二)实现鼠标的视角控制_第2张图片
2. 修改XAML码
然后回到我们的xaml码,在前面添加Helix引用

xmlns:local="clr-namespace:Helix_XAML_model"

然后在三个地方修改xaml码,分别是
Viewport3D 改成 helix:HelixViewport3D 并取个名字我这里叫 viewPort3d
Viewport3D.Camera 改成 helix:HelixViewport3D.Camera
Viewport3D.Children 改成 helix:HelixViewport3D.Children
WPF与3D 模型(二)实现鼠标的视角控制_第3张图片
此时窗口变成这个样子,右下角多了个视角控制小方块
WPF与3D 模型(二)实现鼠标的视角控制_第4张图片
3. 在后台代码添加鼠标控制对象
最后去到后台代码处,加上如下代码

viewPort3d.RotateGesture = new MouseGesture(MouseAction.LeftClick);

WPF与3D 模型(二)实现鼠标的视角控制_第5张图片
完了之后运行程序,我们点击鼠标左键并滑动鼠标,发现模型在动;滚动滚轮,模型也可以缩放。不过不要高兴得太早,我们才成功了一半。我们发现模型一下就飘到了视角以外的地方,这说明我们的视角旋转点需要调整。

4.修正旋转点
视角没有绕着原点旋转的原因是我们没有定义固定旋转点,所以只要固定好旋转点,这个问题就能得到解决。
在后台代码处添加引用

using System.Windows.Media.Media3D;
using HelixToolkit.Wpf;

然后在viewPort3d.RotateGesture = new MouseGesture(MouseAction.LeftClick);前面添加代码

viewPort3d.FixedRotationPoint = new Point3D(0, 0, 0);
viewPort3d.FixedRotationPointEnabled = true;

第一句是定义好我们的旋转点为坐标原点,第二句是Enable这个旋转点。然后我们再运行代码,点击左键并滑动鼠标,模型旋转变正常了。

你可能感兴趣的:(编程相关)