我如何将BlurEffect设置为任何控件的动画?

时间:2011-05-17 20:08:08

标签: silverlight-4.0 effects

我想要一个可重用的函数,只对任何特定的有效控件类型执行BlurEffect。

e.g。

var animation = new DoubleAnimation
{ 
   From = 0,
   To = 8,
   Duration = new TimeSpan(0, 0, 0, 2),
   AutoReverse = true
};
control.Effect = new BlurEffect();
// How to cycle the From and To on the Blur Radius?

我不确定如何在代码后面动态创建动画以使其成为可能。

1 个答案:

答案 0 :(得分:1)

This article显示了如何在代码中定义动画和故事板。

你需要添加BlurEffect并使用blureffect的RadiusProperty代替RotateTransform.AngleProperty,如下所示:

control.Effect.BeginAnimation(Blureffect.RadiusProperty, animation);

-edit-

我现在看到你正在使用Silverlight,而不是wpf(其中Effect implements IAnimatable) 我会尝试为silverlight找到解决方案

-edit2 -

你见过/试过this吗? Msdn还有一个sample for silverlight

-edit3 -

你的指示让我找到了正确的答案,如下:

private void BlurSomething(FrameworkElement control)
        {
            var storyboard = new Storyboard();
            var animation = new DoubleAnimation
            {
                From = 0,
                To = 8,
                Duration = new TimeSpan(0, 0, 0, 1, 0),
                AutoReverse = true
            };
            var effect = new BlurEffect();
            control.Effect = effect;
            storyboard.Children.Add(animation);
            Storyboard.SetTarget(storyboard, control.Effect);
            Storyboard.SetTargetProperty(storyboard, new PropertyPath("Radius"));
            storyboard.Begin();
        }

应该注意的是,Silverlight并不像WPF那样简单,但最终可以做到这一点。