在代码隐藏中动画化LinearGradientBrush颜色

时间:2011-02-16 03:21:29

标签: silverlight animation silverlight-3.0 coloranimation

我正在尝试在Silverlight应用程序中设置LinearGradientBrush(lgb)的动画。我在Page的构造函数中有以下代码:

    for (int stops = 0; stops < numStops; stops++)
    {
        ColorAnimation animation = new ColorAnimation();
        animation.To =
            Color.FromArgb(255, (byte)rnd.Next(256), (byte)rnd.Next(256), (byte)rnd.Next(256));
        animation.Duration = TimeSpan.FromSeconds(1);
        Storyboard.SetTarget(animation, lgb);
        Storyboard.SetTargetProperty(animation,
            new PropertyPath("GradientStops[" + stops.ToString() + "].Color"));
        Storyboard story = new Storyboard();
        story.Children.Add(animation);
        story.Begin();
    }

它编译并运行,但不会改变颜色。我只是看不出我做错了什么。

谢谢,
WTS

1 个答案:

答案 0 :(得分:1)

您的代码在Silverlight 4和Windows Phone 7下运行正常(WP7几乎是Silverlight 3)。我的猜测是,如果我为SL3构建一个孤立的应用程序,它也会在那里工作。

您的代码中唯一缺少的是首先获取lgb的方式?您确定它与UI中实际使用的实例相同吗。

例如,我刚刚将画笔添加到我的LayoutRoot网格中,如下所示: -

<Grid x:Name="LayoutRoot">
    <Grid.Background>
        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
            <GradientStop Color="Black" Offset="0" />
            <GradientStop Color="White" Offset="1" />
        </LinearGradientBrush>
    </Grid.Background>

然后在代码中我将lgb分配给: -

LinearGradientBrush lgb = (LinearGradientBrush)LayoutRoot.Background;