Как бы я анимировал BlurEffect для любого элемента управления? - PullRequest
2 голосов
/ 18 мая 2011

Я хотел бы использовать повторно используемую функцию, которая просто выполняет BlurEffect для любого конкретного допустимого типа элемента управления.

, например

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 Ответ

1 голос
/ 18 мая 2011

В этой статье показано, как определить анимацию и раскадровку в коде.

Вам нужно добавить BlurEffect и использовать RadiusProperty эффекта размытия вместо RotateTransform.AngleProperty, например:

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

-edit-

Теперь я вижу, что вы используете Silverlight, а не wpf (где Effect реализует IAnimatable ) я постараюсь найти решение для silverlight

-edit2-

Вы видели / пробовали это ? Msdn также имеет образец для 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, но в конце концов это можно сделать.

...