c# - 为什么动画 "Height"属性不能像 "Opacity"属性一样对 Windows Universal App 起作用?

标签 c# animation storyboard win-universal-app rectangles

使用以下代码:

        Storyboard storyBoard = new Storyboard();
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = From;
        doubleAnimation.To = To;
        doubleAnimation.Duration = new Duration(new TimeSpan(0, 0, 0, seconds, miliseconds));

        Storyboard.SetTarget(doubleAnimation, Target);
        Storyboard.SetTargetProperty(doubleAnimation, FrameworkElemProperty);
        storyBoard.Children.Add(doubleAnimation);
        storyBoard.Completed += storyBoard_Completed;
        storyBoard.Begin();

对于作为 FrameworkElemProperty 的“Opacity”非常有效,但在 Rectangle 的情况下不起作用,当我尝试为“Height”/“Width”属性设置动画时。有人知道这里发生了什么吗? Microsoft Framework 方面是否存在任何问题,或者这是否需要添加任何魔法? (不透明度和高度是 FrameworkElement 的相同属性,因此预计这将以相同的方式运行)在 Silverlight 中完美运行..

最佳答案

这是记录在案的行为。参见 Optimize animations, media, and images在 MSDN 上。

Opacity 是一种“独立动画”,不依赖于或影响其他属性或其他对象。可以完全运行在组合线程上,运行高效流畅。

高度是一种“依赖动画”,它会在更改时强制更新整体布局。这需要同步合成线程和 UI 线程,并可能导致渲染缓慢且效率低下。

依赖动画在默认情况下是禁用的,应尽可能避免使用。高度和宽度是文档中给出的具体示例,它们通常可以通过独立动画 RenderTransform 而不是更改布局来替换。

如果应用需要使用依赖动画,则可以通过设置动画的 EnableDependentAnimation 来启用它们属性为真和整体Timeline.AllowDependentAnimations为真。

关于c# - 为什么动画 "Height"属性不能像 "Opacity"属性一样对 Windows Universal App 起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33339703/

相关文章:

android - 未调用自定义 ScaleAnimation/applytransformation

ios - 是否可以使用 Storyboard创建非全屏 UITableView?

ios - UIView 中的 UIButton 在另外两个 UIView 后面对上面的 View 的触摸使用react

ios - 将 UIView 拖入 Storyboard 和以编程方式创建 UIView 之间的区别?

c# - "System.Web.UI.MasterPage does not contain a definition..."ASP.NET 错误

c# - 选择 HTML.RadioButtonFor 后如何为模型属性赋值

java - Android - 移动布局或动画项目到购物车

c# - 如何在项目的各个环节高效使用资源字典

c# - 随机对象在后续调用中变得非随机?

swift - 默认 UIView 动画时间间隔