我想要一个可重用的函数,只对任何特定的有效控件类型执行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?
我不确定如何在代码后面动态创建动画以使其成为可能。
答案 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那样简单,但最终可以做到这一点。