首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ColorAnimation帮助?

ColorAnimation帮助?
EN

Stack Overflow用户
提问于 2011-07-11 19:12:28
回答 2查看 654关注 0票数 0

我试图在WPF中做一个彩色动画,这样一个新公开的UI元素就会出现一个红色的边框,随着时间的推移会变成白色。下面是我的代码:

代码语言:javascript
复制
        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构造函数中

代码语言:javascript
复制
this.RegisterName("toFade", toFade);

调用该方法时,将显示所需的元素,但没有颜色动画。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2011-07-11 20:56:06

我会直截了当地告诉你,我只在代码中做过一次动画,这太可怕了。然后,我在VS2008中用XAML处理了一个动画,它非常可怕。然后我得到了一个和动画设计师..。

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

票数 0
EN

Stack Overflow用户

发布于 2011-07-12 00:06:46

你的事情太复杂了,我想说,你只有一个动画,所以没有必要的故事板,只需调用BeginAnimation的刷子,就这样。例如:

代码语言:javascript
复制
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);

另外,如果您必须在后面的代码中使用故事板,请不要使用TargetName属性,而只是使用Target属性,因为您有一个正确的引用,而不仅仅是名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6655195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档