ColorAnimation有帮助吗?

时间:2011-07-11 19:12:29

标签: c# wpf animation

我正在尝试在WPF中进行coloranimation,以便新显示的UI元素出现红色边框随着时间的推移逐渐变白。这是我的代码:

        SolidColorBrush toFade = new SolidColorBrush(Colors.Red);

    private void showElement(SuperTB.SuperTextB toShow)
    {
        toShow.Visibility = Visibility.Visible;
        toShow.BorderBrush = toFade;

        ColorAnimation fadeToWhite = new ColorAnimation();
        fadeToWhite.To = Colors.White;
        fadeToWhite.Duration = TimeSpan.FromSeconds(1);
        Storyboard.SetTargetName(fadeToWhite, "toFade");
        Storyboard.SetTargetProperty(fadeToWhite, new PropertyPath(SolidColorBrush.ColorProperty));
        Storyboard fade = new Storyboard();
        fade.Children.Add(fadeToWhite);
        fade.Begin(this);
    }

在我的MainWindow构造函数中我有

this.RegisterName("toFade", toFade);

调用方法时,会出现所需的元素,但没有颜色动画。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我会直接告诉你,我只在代码中完成了一次动画,这很可怕。然后我在VS2008中的XAML中动画了一个动画,它很可怕。然后我得到了copy of Expression Blend并在设计师中制作了动画......

这样更容易,而且看起来更好,因为我可以更准确地控制动画。帮自己一个忙,得到Blend,这是完全值得的。它需要一点点习惯,但从长远来看,这将节省大量时间。

答案 1 :(得分:0)

你说的太复杂了,我会说,你只有一个动画,所以不需要故事板,只需在画笔上调用BeginAnimation就可以了。 e.g。

Action<TextBox> animMethod = (TextBox x) =>
    {
        var brush = new SolidColorBrush(Colors.Red);
        x.Visibility = Visibility.Visible;
        x.BorderBrush = brush;
        brush.BeginAnimation(SolidColorBrush.ColorProperty, new ColorAnimation(Colors.White, TimeSpan.FromSeconds(1)));
    };
animMethod(tbtest);

此外,如果您必须在代码后面使用故事板,请 not 使用TargetName属性,而只使用Target属性,因为您有适当的参考而不仅仅是这个名字。