平台:
- .NET 3.5 与 C#
- WPF
- 3D工具
我正在使用 Codeplex 站点 ( 3D Tools ) 中的 3DTools 来旋转和平移 3D 模型。这工作正常。Trackball 类还包含一个使用鼠标滚轮缩放模型的方法。但是,此方法始终以 Point(0,0,0) 作为缩放中心来缩放模型。但我想缩放到鼠标指针的坐标(比如谷歌地图,在这里你不是缩放到地图的中心,而是缩放到鼠标指针的坐标)。
我尝试了不同的方法来解决这个问题:
- 将Trackball 类的 ScaleTransform3D 对象的CenterX/Y/Z设置为鼠标指针坐标 -> 它不起作用
- 缩放后平移模型-> 也不起作用;因为鼠标指针的坐标没有改变,所以我无法计算平移距离,例如
- MousePointer 缩放前的坐标 -> 334, 210
- 从 Trackball 类调用 Zoom(-e.Delta)
- MousePointer 缩放后的坐标 -> 334, 210
- 如果 MousePointer 坐标发生变化,例如 330、205,我可以将模型向左平移 4 个点,向上平移 5 个点(我的程序也有 2D 模式,并且坐标会发生变化)
- 移动相机位置-> 不起作用;基于当前相机位置和 MouseWheelEventArgs.Delta 我计算了新的相机位置
有人知道如何解决这个问题吗?