0

在 XAML 中,ProjectionPlane 用于在三维轴上旋转元素。例如,如果我想向我倾斜一个矩形的右边缘,我这样做:

<!-- zero rotation -->
<Rectangle Fill="White" Height="200" Width="200">
    <Rectangle.Projection>
        <PlaneProjection RotationY="0" />
    </Rectangle.Projection>
</Rectangle>

<!-- 45 deg rotation -->
<Rectangle Fill="White" Height="200" Width="200">
    <Rectangle.Projection>
        <PlaneProjection RotationY="45" />
    </Rectangle.Projection>
</Rectangle>

<!-- 85 deg rotation -->
<Rectangle Fill="White" Height="200" Width="200">
    <Rectangle.Projection>
        <PlaneProjection RotationY="85" />
    </Rectangle.Projection>
</Rectangle>

生成的矩形将如下所示:

在此处输入图像描述

到目前为止,一切都很好。这是我的问题。随着角度增加接近 90 度,矩形越来越倾斜。是否有一种属性或技术可以让 ProjectionPlane 沿 Y 轴一直旋转到 90 度但减少旋转(或改变视野)?

换句话说,从后角到前角的角度会减小,因此如果矩形中有内容,它会更容易辨别。

这是一个之前和之后的问题,以使问题尽可能清晰。左边是我得到的。右边是我想要的。说明这一点有些夸张。我希望这是有道理的。

在此处输入图像描述

4

1 回答 1

1

不幸的是,PlaneProjection 不允许您更改投影矩阵。要控制投影,您必须使用Matrix3DProjection。您可以使用文档中提供的示例代码,也可以查看将Matrix3DEx库移植到 WinRT。

您可以尝试的另一件事是将对象沿 Z 轴向后推并按比例放大以保持其大小。由于物体离相机更远,因此翻转时的失真会更小。

顺便说一句,根据 Jaime Rodriguez的说法,PlaneProjection 的 fov 设置为 57 度,对于大多数显示器来说有点宽。

于 2013-01-25T01:41:04.763 回答