2012-10-04 29 views
1

我想將矩形的背景顏色更改爲綠色1秒,而不是將其更改回黑色。我想模擬光線的開啓或關閉 - 我不想淡入顏色。下面的代碼做了我想要的,除了它從黑色變爲綠色,反之亦然。我絕對不想在UI線程睡眠..........如何在沒有淡入淡出效果的情況下創建ColorAnimation

ColorAnimation animation = new ColorAnimation { From = Colors.Black, To = Colors.LightGreen, Duration = new Duration(TimeSpan.FromSeconds(1)), RepeatBehavior= new RepeatBehavior(1), AutoReverse=true }; 
SolidColorBrush activityLight = new System.Windows.Media.SolidColorBrush(Colors.Black); 
ActivityIndicator.Fill = activityLight; 
this.RegisterName("activityLight", activityLight); 
ActivityStoryboard = new Storyboard(); 
ActivityStoryboard.Children.Add(animation); 
Storyboard.SetTargetName(animation, "activityLight"); 
Storyboard.SetTargetProperty(animation, new PropertyPath(SolidColorBrush.ColorProperty)); 

回答

2

你可以使用一個ColorAnimationUsingKeyFrames

var colorAnimation = new ColorAnimationUsingKeyFrames(); 
colorAnimation.KeyFrames.Add(
    new DiscreteColorKeyFrame(Colors.Green, TimeSpan.FromSeconds(0d))); 
colorAnimation.KeyFrames.Add(
    new DiscreteColorKeyFrame(Colors.Black, TimeSpan.FromSeconds(1d))); 

ActivityIndicator.Fill.BeginAnimation(SolidColorBrush.ColorProperty, colorAnimation);