为什么动画&;height &;属性在Windows通用应用程序中不起作用,就像“不透明度”一样.财产
本文关键字:不透明度 不起作用 就像 财产 一样 属性 height 动画 Windows 为什么 应用程序 | 更新日期: 2023-09-27 18:19:09
使用以下代码:
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工作得很好,但在矩形的情况下不起作用,当我试图动画"高度"/"宽度"属性时。有人知道这是怎么回事吗?在微软框架方面是否有任何问题,或者这需要任何神奇的添加?(不透明度和高度是FrameworkElement的相同属性,因此预计这将以相同的方式表现)在Silverlight中工作完美…
这是记录在案的行为。参见在MSDN上优化动画、媒体和图像。
不透明度是一个"独立动画",它不依赖或影响其他属性或其他对象。它可以完全运行在合成线程上,运行高效、平稳。
Height是一个"依赖动画",它将在改变时强制整体布局更新。这需要同步合成线程和UI线程,并可能导致缓慢和低效的呈现。
依赖动画在默认情况下是禁用的,应该尽可能避免使用。高度和宽度是文档中给出的具体示例,它们通常可以通过独立地激活RenderTransform而不是改变布局来替换。
如果一个应用需要使用依赖动画,那么它可以通过设置动画的EnableDependentAnimation属性为true和整个时间轴来启用它们。AllowDependentAnimations为true
你可以改变高度值,但你不能动画它,我不是为这个设计的。如果你想要一个具有高度的动画,你应该考虑动画 scaletransform。写入ScaleY 。
<[YourFrameworkElement].RenderTransform>
<ScaleTransform x:Name="Target" ScaleX="1.0" ScaleY="1.5"/>
</[YourFrameworkElement].RenderTransform>