IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[Rectangle] Comment y réaliser une Color Animation ?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut [Rectangle] Comment y réaliser une Color Animation ?
    bonjour à tous,

    j'ai réussi récemment à animer le background color d'un boutton comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            <LinearGradientBrush x:Key="brushFire" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Black" Offset="0" />
                <GradientStop Color="Red" Offset="0.5" />
            </LinearGradientBrush>
     
            <Style x:Key="buttonFire" TargetType="{x:Type Button}">
                <Style.Triggers>
                    <EventTrigger RoutedEvent="Button.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard TargetProperty="Background.GradientStops[1].Color">
                                    <ColorAnimation From="Black" To="Red" Duration="0:0:2"
                                                    AutoReverse="True" RepeatBehavior="Forever"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
    Tout marche parfaitement et je voulais faire la même chose mais avec un rectangle donc j'ai modifié en conséquence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
            <Style x:Key="fourStyle" TargetType="{x:Type Rectangle}">
                <Setter Property="Width" Value="94" />
                <Setter Property="Height" Value="84" />
                <Setter Property="Stroke" Value="Black" />
                <Setter Property="StrokeThickness" Value="2" />
                <Setter Property="RadiusX" Value="10" />
                <Setter Property="RadiusY" Value="10" />
                <Style.Triggers>
                    <EventTrigger RoutedEvent="Rectangle.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard TargetProperty="Fill.LinearGradientBrush.GradientStop[1].Color">
                                    <ColorAnimation From="Black" To="Red" Duration="0:0:2"
                                                    AutoReverse="True" RepeatBehavior="Forever"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
    Seulement, là, il me renvoie une erreur spécifiant que la propriété "Fill.LinearGradientBrush.GradientStop[1].Color" est inaccessible.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Le mieux serait de passer par Blend pour faire cela

    Sinon essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Storyboard TargetProperty="(Background.Fill).(LinearGradientBrush.GradientStop)[1].(SolidColorBrush.Color)">
    Attention, on est en .NET donc les tableaux commencent à 1: là, tu modifies le 2ème GradientStop de ton dégradé

  3. #3
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    J'ai essayé par Blend mais j'ai un peu de mal à m'en servir... Je ne sais pas si ça c'est vue mais je débute un peu en WPF

    Pour les tableaux, c'est voulu c'est bien le deuxième que je veux modifier ! En utilisant ton code j'ai une autre erreur un peu plus explicite :

    Impossible de convertir la chaîne '(Background.Fill).(LinearGradientBrush.GradientStop)[1].(SolidColorBrush.Color)' de l'attribut 'TargetProperty' en objet de type 'System.Windows.PropertyPath'. Chemin de propriété non valide. 'LinearGradientBrush' n'a pas de propriété publique nommée 'GradientStop'

    Je ne comprends pas trop ce message, en effet si on passe par le code C# on remarque pourtant que LinearGradientBrush contient une propriété publique pour "GradientStop".

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    ERf, j'ai oublié un S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Storyboard TargetProperty="(Background.Fill).(LinearGradientBrush.GradientStops)[1].(SolidColorBrush.Color)">

  5. #5
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    Mouarf j'avais pas vu non plus !

    J'ai tout de même fait une autre petite modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Storyboard TargetProperty="(Fill).(LinearGradientBrush.GradientStops)[1].(SolidColorBrush.Color)">
    Un rectangle ne contient pas de propriété Background

    Par contre, là sa compile bien, sa se lance mais... aucune animation ! Voici mon code au complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
            <LinearGradientBrush x:Key="brushFire" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Black" Offset="0" />
                <GradientStop Color="Red" Offset="0.5" />
            </LinearGradientBrush>
     
            <Style x:Key="fourStyle" TargetType="{x:Type Rectangle}">
                <Setter Property="Width" Value="94" />
                <Setter Property="Height" Value="84" />
                <Setter Property="Stroke" Value="Black" />
                <Setter Property="StrokeThickness" Value="2" />
                <Setter Property="RadiusX" Value="10" />
                <Setter Property="RadiusY" Value="10" />
                <Style.Triggers>
                    <EventTrigger RoutedEvent="Rectangle.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard TargetProperty="(Fill).(LinearGradientBrush.GradientStops)[1].(SolidColorBrush.Color)">
                                    <ColorAnimation From="Black" To="Red" Duration="0:0:2"
                                                    AutoReverse="True" RepeatBehavior="Forever"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
     
    <Rectangle Fill="{StaticResource brushFire}" Style="{StaticResource fourStyle}" />

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
            <LinearGradientBrush x:Key="brushFire" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Black" Offset="0" />
                <GradientStop Color="Red" Offset="0.5" />
            </LinearGradientBrush>
     
            <Style x:Key="fourStyle" TargetType="{x:Type Rectangle}">
                <Setter Property="Width" Value="94" />
                <Setter Property="Height" Value="84" />
                <Setter Property="Stroke" Value="Black" />
                <Setter Property="StrokeThickness" Value="2" />
                <Setter Property="RadiusX" Value="10" />
                <Setter Property="RadiusY" Value="10" />
                <Style.Triggers>
                    <EventTrigger RoutedEvent="Rectangle.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard TargetProperty="(Shape.Fill).(LinearGradientBrush.GradientStops)[1].(SolidColorBrush.Color)">
                                    <ColorAnimation From="Black" To="Red" Duration="0:0:2"
                                                    AutoReverse="True" RepeatBehavior="Forever"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
     
    <Rectangle Fill="{StaticResource brushFire}" Style="{StaticResource fourStyle}" />

  7. #7
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    Tu as bien modifié uniquement cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Storyboard TargetProperty="(Shape.Fill).(LinearGradientBrush.GradientStops)[1].(SolidColorBrush.Color)">
    Idem, ça compile mais aucune animation...

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Oups essaie ça je voulais dire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <LinearGradientBrush x:Key="brushFire" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Black" Offset="0" />
                <GradientStop Color="Red" Offset="0.5" />
            </LinearGradientBrush>
     
            <Style x:Key="fourStyle" TargetType="{x:Type Rectangle}">
                <Setter Property="Width" Value="94" />
                <Setter Property="Height" Value="84" />
                <Setter Property="Stroke" Value="Black" />
                <Setter Property="StrokeThickness" Value="2" />
                <Setter Property="RadiusX" Value="10" />
                <Setter Property="RadiusY" Value="10" />
                <Style.Triggers>
                    <EventTrigger RoutedEvent="Rectangle.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetProperty="(Shape.Fill).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" From="Black" To="Red" Duration="0:0:2"
                                                    AutoReverse="True" RepeatBehavior="Forever"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </Style.Triggers>
            </Style>
     
    <Rectangle Fill="{StaticResource brushFire}" Style="{StaticResource fourStyle}" />

  9. #9
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    ça marche !

    Merci beaucoup rad_hass !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [API HTML5] [Article] Canvas : réaliser une bannière animée en quelques lignes de code
    Par Bovino dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 06/06/2012, 13h26
  2. [Custom ProgressView] Réaliser une progressView animée
    Par dark$hadow dans le forum Objective-C
    Réponses: 1
    Dernier message: 24/05/2011, 20h46
  3. comment réaliser une animation du type leral.sn
    Par papisdoums dans le forum Flash/Flex
    Réponses: 1
    Dernier message: 11/03/2010, 23h51
  4. Comment réaliser une animation ?
    Par julien.jonard dans le forum MATLAB
    Réponses: 1
    Dernier message: 09/10/2006, 16h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo