运用了DoubleAnimation,PointAnimation,ColorAnimation。
<Canvas>
<Rectangle Name="rect" Canvas.Left="96" Canvas.Top="96" Width="192" Height="192" Stroke="Black">
<Rectangle.Fill>
<LinearGradientBrush x:Name="brush">
<GradientStop Offset="0" Color="Red"/>
<GradientStop Offset="1" Color="Blue"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Canvas.Triggers>
<EventTrigger RoutedEvent="Canvas.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="rect" Storyboard.TargetProperty="Width"
From="192" To="204" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
<DoubleAnimation Storyboard.TargetName="rect" Storyboard.TargetProperty="Height"
From="192" To="204" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
<DoubleAnimation Storyboard.TargetName="rect" Storyboard.TargetProperty="(Canvas.Left)"
From="96" To="90" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
<DoubleAnimation Storyboard.TargetName="rect" Storyboard.TargetProperty="(Canvas.Top)"
From="96" To="90" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
<PointAnimation Storyboard.TargetName="brush" Storyboard.TargetProperty="StartPoint"
From="0 0" To="1 0" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever"/>
<PointAnimation Storyboard.TargetName="brush" Storyboard.TargetProperty="EndPoint"
From="1 1" To="0 1" Duration="0:0:5" AutoReverse="True" RepeatBehavior="Forever"/>
<ColorAnimation Storyboard.TargetName="brush" Storyboard.TargetProperty="GradientStops[0].Color"
From="Red" To="Blue" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
<ColorAnimation Storyboard.TargetName="brush" Storyboard.TargetProperty="GradientStops[1].Color"
From="Blue" To="Red" Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
</Canvas>