gpt4 book ai didi

Wpf 视口(viewport)坐标

转载 作者:行者123 更新时间:2023-12-04 07:00:23 24 4
gpt4 key购买 nike

嘿伙计们,我正在使用 wpf 3d,我目前正在编写一个程序,该程序将在屏幕上从左到右创建 3d 瓷砖,但我需要知道我在 X、Y 上的界限是什么,即 (-x-0) (0- x+) 所以我知道什么时候开始另一排瓷砖。我最初的想法是试图找出一种从像素到屏幕坐标的复杂算法,但似乎应该有一种更简单的方法。

最佳答案

如果我理解正确,您想通过 Viewport3DVisual 找出 3D 坐标的可见范围。

这个问题没有单一的答案。要了解原因,请想象您正坐在厨房的餐 table 旁吃早餐,碰巧透过 window 看。你能看到什么水平范围?好吧,您可以在远处看到大约 5 英里的那些蓝色山脉,但距离您的后栅栏只有 30 英尺。换言之,可视区域不是矩形棱柱,而是金字塔。

最重要的是,您必须指定所涉及的距离,然后才能通过视口(viewport)看到水平和垂直范围。

指定距离后,以下是如何将视口(viewport)映射到给定平面上的 3D 点,而无需自己进行所有计算:

  • 在单独的 Viewport3dVisual 中创建模型,使用相同的相机设置,但模型仅由所需距离处的单个大矩形组成。
  • 使用 HitTest 来测试视口(viewport)的每个角落,接收 HitTest 结果回调。
  • 从 HitTest 结果中提取矩形上的坐标并将它们用于计算。

  • 这种技术的优点是可以在相机可能面向的任何地方可靠地工作,甚至适用于动画相机等。

    注意:如果我误解了这个问题,而您只是询问在 2D 中布置包含 3D 内容的瓷砖行,那么您只需使用 WrapPanel 即可获得您描述的效果。如果要进行数据绑定(bind),请将 ItemsControl 或 ListBox 与 WrapPanel 的 ItemPanelTemplate 一起使用。

    关于Wpf 视口(viewport)坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1962356/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com