• 0

[c# / WPF] Stopping Effect Animation


Question

Hello gang,

I have a menu that has a "glow" effect that works fine, but I cannot find out how to stop it. I have tried setting: effTitleFade = null; but the effect keeps going. What am I missing?

I found the example here:http://social.msdn.microsoft.com/Forums/en/wpf/thread/5533e0ef-aad0-4a4a-8f16-c681ec94d346


DropShadowEffect effTitleFade = new DropShadowEffect();
effTitleFade.Color = Color.FromArgb(0, 0, 255, 255);
effTitleFade.Direction = 0;
effTitleFade.BlurRadius = 0;
effTitleFade.ShadowDepth = 0;
this.txtTitle.Effect = effTitleFade;
DoubleAnimation daBlur = new DoubleAnimation(0, 25, new Duration(TimeSpan.FromSeconds(4)));
daBlur.AutoReverse = true;
daBlur.RepeatBehavior = RepeatBehavior.Forever;
effTitleFade.BeginAnimation(DropShadowEffect.BlurRadiusProperty, daBlur);
[/CODE]

Link to comment
https://www.neowin.net/forum/topic/1096249-c-wpf-stopping-effect-animation/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

I'd venture the offending line is this:


daBlur.RepeatBehavior = RepeatBehavior.Forever;
[/CODE]

Thanks... but no. I want the daBlur to repeat forever until the user selects an option (moving from one menu to another) At that time I need to shut off the glow from this MenuItem and turn it on with another.

  • 0

If you want to remove the effect you just assigned, simply assign Effect to null.

To answer your original question, setting effTitleFade to null changes the effTitleFade variable to point to null instead of the object you created. But your TextBlock's Effect property still holds a reference to that object.

If I give you a piece of paper with my address on it, you'll be able to come to my house and paint it green. But if you erase what was written on the piece of paper, my house still exists. To make it disappear, I'd need to lose my own piece of paper that says where I live, at which point the city notices that nobody uses that house anymore and destroys it to replace it with something else the next time space is needed. Here, the pieces of paper are the references to my house and the city is the garbage collector.

  • 0

If you want to remove the effect you just assigned, simply assign Effect to null.

To answer your original question, setting effTitleFade to null changes the effTitleFade variable to point to null instead of the object you created. But your TextBlock's Effect property still holds a reference to that object.

If I give you a piece of paper with my address on it, you'll be able to come to my house and paint it green. But if you erase what was written on the piece of paper, my house still exists. To make it disappear, I'd need to lose my own piece of paper that says where I live, at which point the city notices that nobody uses that house anymore and destroys it to replace it with something else the next time space is needed. Here, the pieces of paper are the references to my house and the city is the garbage collector.

Thank you very much for the clarification.

This topic is now closed to further replies.