Vorgehensweise: Animieren der Farbe oder der Durchlässigkeit von einem SolidColorBrushHow to: Animate the Color or Opacity of a SolidColorBrush

Dieses Beispiel zeigt, wie Sie animieren der Color und Opacity von einem SolidColorBrush.This example shows how to animate the Color and Opacity of a SolidColorBrush.

BeispielExample

Im folgende Beispiel werden drei Animationen verwendet, zum Animieren der Color und Opacity von einem SolidColorBrush.The following example uses three animations to animate the Color and Opacity of a SolidColorBrush.

  • Der ersten Animation, einer ColorAnimation, ändert sich die Farbe des Pinsels auf Gray Wenn die Maus in das Rechteck eintritt.The first animation, a ColorAnimation, changes the brush's color to Gray when the mouse enters the rectangle.

  • Der nächsten Animation, einer anderen ColorAnimation, ändert sich die Farbe des Pinsels auf Orange Wenn sich der Mauszeiger in des Rechtecks.The next animation, another ColorAnimation, changes the brush's color to Orange when the mouse leaves the rectangle.

  • Der letzten Animation, einer DoubleAnimation, wird die Durchlässigkeit des Pinsels zu 0,0 geändert, wenn die linke Maustaste gedrückt wird.The final animation, a DoubleAnimation, changes the brush's opacity to 0.0 when the left mouse button is pressed.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Input;

namespace Microsoft.Samples.Animation
{
    /// <summary>
    /// This example shows how to animate the Opacity and Color 
    /// properties of a SolidColorBrush.
    /// </summary>
    public class SolidColorBrushExample : Page
    {

        public SolidColorBrushExample()
        {
            Title = "SolidColorBrush Animation Example";
            Background = Brushes.White;

            // Create a NameScope for the page so
            // that Storyboards can be used.
            NameScope.SetNameScope(this, new NameScope());

            // Create a Rectangle.
            Rectangle aRectangle = new Rectangle();
            aRectangle.Width = 100;
            aRectangle.Height = 100;

            // Create a SolidColorBrush to paint
            // the rectangle's fill. The Opacity
            // and Color properties of the brush
            // will be animated.
            SolidColorBrush myAnimatedBrush = new SolidColorBrush();
            myAnimatedBrush.Color = Colors.Orange;
            aRectangle.Fill = myAnimatedBrush;

            // Register the brush's name with the page
            // so that it can be targeted by storyboards.
            this.RegisterName("MyAnimatedBrush", myAnimatedBrush);

            //
            // Animate the brush's color to gray when
            // the mouse enters the rectangle.
            //
            ColorAnimation mouseEnterColorAnimation = new ColorAnimation();
            mouseEnterColorAnimation.To = Colors.Gray;
            mouseEnterColorAnimation.Duration = TimeSpan.FromSeconds(1);
            Storyboard.SetTargetName(mouseEnterColorAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                mouseEnterColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));
            Storyboard mouseEnterStoryboard = new Storyboard();
            mouseEnterStoryboard.Children.Add(mouseEnterColorAnimation);
            aRectangle.MouseEnter += delegate(object sender, MouseEventArgs e)
            {
                mouseEnterStoryboard.Begin(this);
            };

            //
            // Animate the brush's color to orange when
            // the mouse leaves the rectangle.
            //
            ColorAnimation mouseLeaveColorAnimation = new ColorAnimation();
            mouseLeaveColorAnimation.To = Colors.Orange;
            mouseLeaveColorAnimation.Duration = TimeSpan.FromSeconds(1);
            Storyboard.SetTargetName(mouseLeaveColorAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                mouseLeaveColorAnimation, new PropertyPath(SolidColorBrush.ColorProperty));
            Storyboard mouseLeaveStoryboard = new Storyboard();
            mouseLeaveStoryboard.Children.Add(mouseLeaveColorAnimation);
            aRectangle.MouseLeave += delegate(object sender, MouseEventArgs e)
            {
                mouseLeaveStoryboard.Begin(this);
            };

            //
            // Animate the brush's opacity to 0 and back when
            // the left mouse button is pressed over the rectangle.
            //
            DoubleAnimation opacityAnimation = new DoubleAnimation();
            opacityAnimation.To = 0.0;
            opacityAnimation.Duration = TimeSpan.FromSeconds(0.5);
            opacityAnimation.AutoReverse = true;
            Storyboard.SetTargetName(opacityAnimation, "MyAnimatedBrush");
            Storyboard.SetTargetProperty(
                opacityAnimation, new PropertyPath(SolidColorBrush.OpacityProperty));
            Storyboard mouseLeftButtonDownStoryboard = new Storyboard();
            mouseLeftButtonDownStoryboard.Children.Add(opacityAnimation);
            aRectangle.MouseLeftButtonDown += delegate(object sender, MouseButtonEventArgs e)
            {
                mouseLeftButtonDownStoryboard.Begin(this);
            };

            StackPanel mainPanel = new StackPanel();
            mainPanel.Margin = new Thickness(20);
            mainPanel.Children.Add(aRectangle);
            Content = mainPanel;
        }

    }
}

Ein ausführlicheres Beispiel, zeigt, wie sich unterschiedliche Pinseltypen animiert, finden Sie unter den Pinselbeispiel.For a more complete sample, which shows how to animate different types of brushes, see the Brushes Sample. Weitere Informationen zur Animation finden Sie unter den Übersicht über Animationen.For more information about animation, see the Animation Overview.

Verwenden Sie für Konsistenz mit anderen Animationsbeispielen die Codeversionen dieses Beispiels ein Storyboard Objekt zum Anwenden der Animationen.For consistency with other animation examples, the code versions of this example use a Storyboard object to apply their animations. Beim Anwenden einer Animation im Code ist es jedoch einfacher, die BeginAnimation Methode anstelle einer Storyboard.However, when applying a single animation in code, it's simpler to use the BeginAnimation method instead of using a Storyboard. Ein Beispiel finden Sie unter Vorgehensweise: Animieren einer Eigenschaft ohne Storyboard.For an example, see Animate a Property Without Using a Storyboard.

Siehe auchSee also