WPF简单动画导致性能问题

时间:2014-06-12 12:09:14

标签: c# wpf performance animation

如下所示,我有一个Canvas,可以让你在一个Thumb控件上拖动。将ProgressBars IsIndeterminate值设置为false时,拇指在拖动时会非常敏感,但只要将其设置为true,即使对于这样一个简单的情况,拇指也会滞后很多帧。当你添加更多控件时,它会变得非常明显。

设置Timeline.DesiredFrameRateProperty似乎没有任何区别。

我能做些什么来阻止这个问题吗?

<Window x:Class="WpfApplication30.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas>
    <Thumb Width="50"
           Height="50" 
           Canvas.Left="10"
           Canvas.Top="10"
           DragDelta="Thumb_DragDelta"/>

    <ProgressBar Width="200"
                 Height="20"
                 IsIndeterminate="True" />
</Canvas>

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline), new FrameworkPropertyMetadata { DefaultValue = 1 });
    }

    private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        UIElement obj = sender as UIElement;
        Canvas.SetLeft(obj, Canvas.GetLeft(obj) + e.HorizontalChange);
        Canvas.SetTop(obj, Canvas.GetTop(obj) + e.VerticalChange); 
    }
}

1 个答案:

答案 0 :(得分:0)

我观察到,生气勃勃的进度条会破坏终端服务器的性能。

这只是你的机器吗?您是否正在远程观察并观察此行为?