none
XAML animation et dégradé RRS feed

  • Question

  • Bonjour,

    Je cherche à faire un dégrader animé (XAML) mais j'ai plusieurs problèmes :

    1. La couleur finie par être complètement rose (peut être un problème de timer)
    2. 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.




    lundi 24 octobre 2016 12:02