将动态效果设置为UIElement.Effect

时间:2011-12-07 13:53:35

标签: c# silverlight xaml animation silverlight-4.0

我们正在使用具有某些形状的第三方,当其中一个无效时,我想让它发光。目前我使用它的唯一方法是使用DropShadowEffect

 myShape.Effect = new DropShadowEffect { BlurRadius = 120, Color = Color.FromArgb(220, 255, 0, 0), Direction = 0, ShadowDepth = 0 };

不幸的是,这不是动画。我知道我们可以使用VisualState做一些动画,但我看不到将它与UIElement.Effect一起使用的方法。

如果我无法控制绘制形状的画布,那么如何在Silverlight中制作这种发光效果,既不是形状本身,因为它是第三方?

1 个答案:

答案 0 :(得分:0)

我现在可以拥有动画,但它的工作效率为90%

我像以前一样设置效果:

myShape.Effect = new DropShadowEffect {BlurRadius = 500,Color = Color.FromArgb(255,255,0,0),Direction = 0,ShadowDepth = 10,Opacity = 100};

然后我创建一个故事板并添加它:

var shadowExpand = new DoubleAnimation();
shadowExpand.From = 1;
shadowExpand.To = 0;
shadowExpand.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
shadowExpand.RepeatBehavior = RepeatBehavior.Forever;
shadowExpand.AutoReverse = true;
Storyboard.SetTarget(shadowExpand, addFlowShape);
Storyboard.SetTargetProperty(shadowExpand, new PropertyPath("(UIElement.Effect).(DropShadowEffect.Opacity)"));
var stb = new Storyboard();
stb.Children.Add(shadowExpand);

<击> 问题是,我认为它在1999ms没有做任何事情,然后从100到0快速轻弹,而不是逐渐进行。

<击>

任何身体都可以让它更顺畅吗?

我不得不把1而不是100用于不透明度。谢谢大家。