首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF 3D:以鼠标指针坐标为中心的缩放模型

WPF 3D:以鼠标指针坐标为中心的缩放模型
EN

Stack Overflow用户
提问于 2010-04-01 10:05:58
回答 1查看 2.9K关注 0票数 1

模板:

  • .NET 3.5与C#
  • WPF
  • 3 3DTools

我正在使用Codeplex站点(三维工具)中的3DTools来旋转和平移3D模型。这个很好用。Trackball类还包含一种用鼠标轮缩放模型的方法。然而,这种方法通常是以点(0,0,0)为缩放中心的模型进行缩放。但是我想放大到鼠标指针的坐标(就像Google,这里不是缩放到地图的中心,而是鼠标指针坐标)。

我尝试了不同的方法来解决这个问题:

  • 将Trackball类的对象的ScaleTransform3D对象的ScaleTransform3D CenterX/Y/Z设置为鼠标指针坐标->,它没有工作
  • pan模型缩放后的 ->也没有工作;因为鼠标指针的坐标不变,所以无法计算出平移距离,例如。
    • 放大MousePointer -> 334,210前的坐标
    • 从Trackball类调用Zoom(-e.Delta)
    • 放大后的MousePointer坐标-> 334,210
    • 如果MousePointer坐标会改变,例如330,205,我可以平移模型左边的4个点和向上的5分(我的程序也有一个2D模式,在那里坐标改变)

  • 移动相机位置 ->没有工作;根据当前的摄像机位置和MouseWheelEventArgs.Delta,我计算了新的摄像机位置

有人知道如何解决这个问题吗?

EN

Stack Overflow用户

发布于 2010-04-01 10:57:31

3 3DTools项目在.NET 3.5上不能很好地工作,因为它是在.NET 3.0版本的WPF上运行的。

3D工具的任务(因此功能)是使.NET 3.0的WPF上的2D控件在3D上的编码更容易。如果您有.NET 3.5,您已经支持2D的3D编程和WPF支持。

虽然.NET 3.5基本上是.NET 3.0 SP1 + LINQ,但.NET 3.0 SP1上的WPF子系统与.NET 3.0发行版的WPF有很大的差异。

请访问MSDN库上的此页面:

http://msdn.microsoft.com/en-us/library/bb613588(v=VS.90).aspx

此外,在.NET 3.0 SP1的WPF中,鼠标跟踪也不受很好的支持。我建议您重写鼠标跟踪代码,并在.NET 3.5环境下重新编译它(目标项目为.NET 3.5)。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2559573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档