我已经开始使用UWP应用程序中的Windows组成API来动画UI的元素。
视觉元素暴露了旋转词根和旋转属性以及旋转属性。
当我对矩形对象的旋转式旋转式旋转轴围绕y轴进行动画作用时,矩形如我所期望的那样旋转,但是在2D应用程序窗口中,它似乎并未以2.5D投影显示。
有没有办法获得与组合API旋转的2.5D投影效应?
这取决于您想要的效果。GitHub上有一个流利的设计应用程序样本,这是链接。您将可以从商店下载演示。您可以从深度样本中获得一些想法。例如,翻转以显示旋转图像卡的方法,您可以从此处找到源代码。有关更多详细信息,请检查示例和演示。
通常,动画是根据x轴旋转的:
rectanglevisual.rotationaxis = new System.numerics.Vector3(1f,0f,0f,0f);
然后使用旋转动画根据旋转旋转旋转。
您也可以通过使用图像控件中的planeprodoxjoction直接在XAML平台上执行此操作。
作为@barrywang指向我指出的样本,证明有必要在执行动画以获得旋转或旋转或旋转的2.5D效果之前,将transformmatrix应用于页面(或育儿容器)其他空间转换动画具有组成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
}