我已经开始在UWP应用程序中使用Windows组合API来激活UI的元素。
可视化元素公开RotationAngleInDegrees和RotationAngle属性以及RotationAxis属性。
当我将矩形对象的RotationAngleInDegrees值围绕Y轴动画时,矩形会像我所期望的那样旋转,但在2D应用程序窗口中,它似乎不是用2.5D投影显示的。
有没有办法用组合api在旋转时得到2.5D的投影效果?
发布于 2019-03-07 19:56:54
正如@BarryWang给我演示的示例所示,在执行动画之前,有必要向页面(或育儿容器)应用一个TransformMatrix,以便使用组合api获得2.5D的旋转效果或其他空间转换动画。
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
}发布于 2019-03-06 08:02:03
这取决于你想要的效果。在GitHub上有一个流畅的设计应用程序示例,这里是链接。您可以从商店下载演示。你可以从深度样本中得到一些信息。例如,翻转显示显示一种旋转图像卡的方法,您可以从这里找到源代码。有关更多细节,请查看示例和演示。
通常,动画是基于X轴旋转的:
rectanglevisual.RotationAxis =新System.Numerics.Vector3(1f,0f,0f);
然后利用旋转动画实现基于RotationAngleInDegrees的旋转。
您也可以通过使用来自图像控制的PlaneProjection在XAML平台上直接这样做。
https://stackoverflow.com/questions/55014325
复制相似问题