WPF 屏幕坐标转3D坐标的问题

yangjiyun 2009-09-02 04:32:50
3D环境坐标转屏幕坐标没有问题
GeneralTransform3DTo2D gt=model.TransformToAncestor(viewport3d);
Point point = gt.Transform(new Point3D(0, 0, 0));
point就应该是窗口中心位置,我的事全屏,那就是1024/2 -768/2
这个就可以

但是我想屏幕坐标转3D坐标,应该是这个类 GeneralTransform2DTo3D ,用法和上面那个相似

GeneralTransform2DTo3D gt1=viewport3d.TransformToAncestor(model);

但报异常,提示该Visual不是目标Visual的上级

按这个情况来看,viewport3d就是model的上级,那样写也应该没有问题。

请大家讨论一下。这里应该怎么做呢?
...全文
477 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gae_Bolg 2010-05-06
  • 打赏
  • 举报
回复
不知LZ解决了吗? 据说GeneralTransform3DTo2D和GeneralTransform2DTo3D用法不一样的,2Dto3D不像我们想象的那样。

好像有个第三方的库叫3DTools可能可以解决这个问题。

依然纠结中……
Gae_Bolg 2010-05-06
  • 打赏
  • 举报
回复
我遇到同样的问题。
我感觉,这个应该是父子关系颠倒了吧。但是我还没有找到解决方法
yangjiyun 2009-09-05
  • 打赏
  • 举报
回复
顶!
yangjiyun 2009-09-03
  • 打赏
  • 举报
回复
我是这样想,3DTO2D,概念上没有问题,但2DTO3d,如果转的话,肯定不止一个3D坐标,应该是一个线。那么如果我们指定了一个在3D的平面,那么就应该是和那个平面相交的坐标。这样也对阿。
我看那个viewport3d.TransformToAncestor(model); 其中model估计就是那个面

但为什么又报该Visual不是目标Visual的上级呢?
zhuzhi 2009-09-03
  • 打赏
  • 举报
回复
没有这样转过,但是按照常理,3D是包含2D的,所以很容易转。但是2D转3D应该是需要一些规则才行,否则计算机业不知道怎么转。
jv9 2009-09-02
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/magazine/cc500570.aspx

这篇文章应该有帮助。
jv9 2009-09-02
  • 打赏
  • 举报
回复
没有做过这方面,帮你顶,跟着学习。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧