我想爲從波浪中心點平滑向外移動的徑向漸變創建動畫。如何平滑地向外生成徑向漸變
這裏是兩個不同的故事板,我曾嘗試:
<Storyboard x:Key="RadialStoryBoard" RepeatBehavior="Forever">
<DoubleAnimation Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Offset)" From=".1" To=".7" Duration="00:00:03" Storyboard.TargetName="RadialTest" />
<DoubleAnimation Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Offset)" From=".2" To=".8" Duration="00:00:03" Storyboard.TargetName="RadialTest" />
<DoubleAnimation Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Offset)" From=".3" To=".9" Duration="00:00:03" Storyboard.TargetName="RadialTest" />
<DoubleAnimation Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Offset)" From=".4" To="1" Duration="00:00:03" Storyboard.TargetName="RadialTest" />
</Storyboard>
<Storyboard x:Key="RadialStory2Board" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Offset)" Storyboard.TargetName="RadialTest">
<EasingDoubleKeyFrame KeyTime="0:0:3" Value=".5" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Offset)" Storyboard.TargetName="RadialTest">
<EasingDoubleKeyFrame KeyTime="0:0:3" Value=".7" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[2].(GradientStop.Offset)" Storyboard.TargetName="RadialTest">
<EasingDoubleKeyFrame KeyTime="0:0:3" Value=".9" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Rectangle.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Offset)" Storyboard.TargetName="RadialTest">
<EasingDoubleKeyFrame KeyTime="0:0:3" Value="1.1" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource RadialStory2}"/>
</EventTrigger>
</Window.Triggers>
這裏的對象:
<Rectangle x:Name="RadialTest" Height="50" Width="150" Stroke="Blue" StrokeThickness="4" Margin="5">
<Rectangle.Fill>
<RadialGradientBrush Center="0.5,0.5" RadiusX=".15" RadiusY=".15" GradientOrigin="0.5,0.5" MappingMode="RelativeToBoundingBox" SpreadMethod="Repeat" >
<GradientStop Color="Yellow" Offset="0.1"/>
<GradientStop Color="Black" Offset="0.2"/>
<GradientStop Color="Yellow" Offset="0.3"/>
<GradientStop Color="Black" Offset="0.4"/>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
我已經嘗試了幾種不同的改變,但是這是關於衣櫃我來。建議?
有沒有辦法使每個圓環的「定義」更少,以便它們彼此流血更多,還是我應該使用更深更亮的黃色來代替黑色和黃色的硬停止來實現? – jrandomuser 2014-09-30 21:35:39
@jrandomuser不確定你想要它看什麼。您可以嘗試改變偏移顏色以及偏移之間的距離***。我試過使用'#ff888800'而不是'Black',看起來顏色之間有更平滑的過渡。正如我在我的回答中所說的,這裏的核心機制(解決問題)不依賴於'SpreadMethod = Repeat',只需創建多個GradientStops並將其調整爲您想要的。 (只要我們對偏移進行動畫處理,這是我認爲的唯一方法)。 – 2014-10-01 10:25:28