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

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

步骤:

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

1.安装两个tool box
点击 项目——管理Nuget程序包
在这里插入图片描述
搜索Helix,安装前两个包
在这里插入图片描述
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
在这里插入图片描述
此时窗口变成这个样子,右下角多了个视角控制小方块
在这里插入图片描述
3. 在后台代码添加鼠标控制对象
最后去到后台代码处,加上如下代码

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

在这里插入图片描述
完了之后运行程序,我们点击鼠标左键并滑动鼠标,发现模型在动;滚动滚轮,模型也可以缩放。不过不要高兴得太早,我们才成功了一半。我们发现模型一下就飘到了视角以外的地方,这说明我们的视角旋转点需要调整。

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这个旋转点。然后我们再运行代码,点击左键并滑动鼠标,模型旋转变正常了。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值