Bonjour,
Je cherche à faire un dégrader animé (XAML) mais j'ai plusieurs problèmes :
- La couleur finie par être complètement rose (peut être un problème de timer)
- Le dégrader ne parait pas fluide, il saccade pas mal à mon gout.
Voici mon bloc de code :
<Rectangle Width="100" Height="100" Stroke="Black" >
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.MouseLeftButtonDown">
<BeginStoryboard>
<Storyboard x:Name="Degrader"
FillBehavior="HoldEnd"
Completed="setC1Color">
<ColorAnimation
Storyboard.TargetName="c1"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c2 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c2"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c3 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c3"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c4 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c4"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c5 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c5"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c6 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c6"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c7 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
<ColorAnimation
Storyboard.TargetName="c7"
Storyboard.TargetProperty="Color"
To="{Binding ElementName=c1 , Path=Color}"
Duration="0:0:0.1"
BeginTime="0:0:0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Rectangle.Triggers>
<Rectangle.Fill>
<RadialGradientBrush
GradientOrigin="0.5,0.5"
Center="0.5,0.5" >
<RadialGradientBrush.GradientStops>
<GradientStop x:Name="c1" Color="Red" Offset="0.0" />
<GradientStop x:Name="c2" Color="Orange" Offset="0.17" />
<GradientStop x:Name="c3" Color="Yellow" Offset="0.33" />
<GradientStop x:Name="c4" Color="Green" Offset="0.5" />
<GradientStop x:Name="c5" Color="Blue" Offset="0.67"/>
<GradientStop x:Name="c6" Color="Indigo" Offset="0.83"/>
<GradientStop x:Name="c7" Color="Violet" Offset="1.0"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
Et le code behind contient le code suivant :
private void setC1Color(object sender, EventArgs e)
{
Degrader.Begin();
}
Si vous avez une idée je suis preneur :)
Merci d'avance.