Windows 合成 API 是否支持 2.5D 投影旋转?

Does the Windows Composition API support 2.5D projected rotation?

我已经开始在 UWP 应用程序中使用 Windows 组合 API 来为 UI 的元素设置动画。

视觉元素公开 RotationAngleInDegrees 和 RotationAngle 属性以及 RotationAxis 属性。

当我围绕 Y 轴设置矩形对象的 RotationAngleInDegrees 值的动画时,矩形按我预期的那样旋转,但在 2D 应用程序中 window,它似乎没有显示 2.5D 投影。

有没有办法用合成api得到旋转的2.5D投影效果?

这取决于你想要的效果。 GitHub 和 here is the link. You will be able to download the demo from the store. And you can get some idea from depth samples. For example, flip to reveal shows a way to rotate a image card and you can find source code from here 上有一个流畅的设计应用程序示例。有关详细信息,请查看示例和演示。

一般情况下,动画是以X轴为基准旋转的:

rectanglevisual.RotationAxis = new System.Numerics.Vector3(1f, 0f, 0f);

然后使用旋转动画根据RotationAngleInDegrees旋转。

您也可以直接在 XAML 平台上使用图像控件中的 PlaneProjection 执行此操作。

正如@BarryWang 向我指出的示例所示,有必要在执行动画之前将 TransformMatrix 应用到页面(或育儿容器),以获得旋转的 2.5D 效果或其他空间变换动画作文 api.

    private void UpdatePerspective()
    {
        Visual visual = ElementCompositionPreview.GetElementVisual(MainPanel);

        // Get the size of the area we are enabling perspective for
        Vector2 sizeList = new Vector2((float)MainPanel.ActualWidth, (float)MainPanel.ActualHeight);

        // Setup the perspective transform.
        Matrix4x4 perspective = new Matrix4x4(

                    1.0f, 0.0f, 0.0f, 0.0f,

                    0.0f, 1.0f, 0.0f, 0.0f,

                    0.0f, 0.0f, 1.0f, -1.0f / sizeList.X,

                    0.0f, 0.0f, 0.0f, 1.0f);

        // Set the parent transform to apply perspective to all children
        visual.TransformMatrix =

                           Matrix4x4.CreateTranslation(-sizeList.X / 2, -sizeList.Y / 2, 0f) *      // Translate to origin

                           perspective *                                                            // Apply perspective at origin

                           Matrix4x4.CreateTranslation(sizeList.X / 2, sizeList.Y / 2, 0f);         // Translate back to original position
    }