Я хотел бы анимировать радиальный градиент, плавно перемещающийся от центра в волнах.Как анимировать радиальный градиент плавно наружу
Вот два разных раскадровки я пытался:
<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
@jrandomuser не уверен, что именно вы хотите, чтобы он выглядел. Вы можете попробовать сыграть с изменением цветов смещения, а также *** расстояния *** между смещениями. Я попробовал использовать '# ff888800' вместо' Black', и похоже, что существует более плавный переход между цветами. Как я уже сказал в своем ответе, основной механизм здесь (чтобы решить проблему) не полагается на 'SpreadMethod = Repeat', просто создайте многогранные градиенты и настройте их на то, что вы хотите. (пока мы анимируем смещения, это единственный способ, который я думаю). –