大家好,我是Korbinian,我目前正在研究关于WPF和动画UI元素的CPU消耗问题。我们通过System.Windows.Media.Animation.DoubleAnimation methode BeginAnimation来动画UI元素。我对WPF特别是动画很陌生。
Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline),
new FrameworkPropertyMetadata { DefaultValue = 8 });
flashAnimation = new DoubleAnimation(1, 0.3, TimeSpan.FromMilliseconds(330), FillBehavior.Stop)
{
RepeatBehavior = RepeatBehavior.Forever,
AutoReverse = true
};
this.BeginAnimation(FlashOpacityProperty, flashAnimation);
提示:我已经在上面的片段中尝试将DesiredFrameRate降低到8,以减少CPU消耗。
就我在调试过程中所看到的,FlashOpacityProperty的回调(PropertyChangedCallback)每秒被调用大约8次。这个回调的数量在某种程度上与DoubleAnimation的构造函数中定义的内容无关。我的目标是减少回调的数量。对于我的用例来说,拥有流畅和好看的动画并不重要。它应该主要支持高亮显示。
有没有可能减少回调的数量?或者这是一个固定的动画类型从。Net?
先谢谢你了
1条答案
按热度按时间ddrv8njm1#
问题是,DependencyProperty在无限循环中被更改(每秒约8次)。
与此无关,DoubleAnimation没有使用DependencyProperty的更新值。
最后,我删除了DependencyProperty,并在特定的Behavior实现中处理了动画。