wpf System.Windows.Media.Animation.DoubleAnimation会生成大量DependecyProperty的PropertyChangedCallbacks

niwlg2el  于 2023-03-24  发布在  Windows
关注(0)|答案(1)|浏览(100)

大家好,我是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?
先谢谢你了

ddrv8njm

ddrv8njm1#

问题是,DependencyProperty在无限循环中被更改(每秒约8次)。
与此无关,DoubleAnimation没有使用DependencyProperty的更新值。
最后,我删除了DependencyProperty,并在特定的Behavior实现中处理了动画。

相关问题