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 :

Animation bouton c# wpf [Débutant]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut Animation bouton c# wpf
    bonjour a tous,

    voila, je souhaite creer une animation sur un bouton pour changer la couleur du background.

    j'ai un message d'erreur lorsque je fais mon storiboard.begin(); :
    Aucune portée de nom applicable n'existe pour résoudre le nom 'piece2'
    voici mon code:

    Code c# : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
            public Plateau1 plateau;
     
            public int reference { get; set; }
            public Button forme { get; set; }
            public LinearGradientBrush couleur { get; set; }
     
            public element(int reference, SolidColorBrush sa_couleur, Plateau1 createur)
            {
                this.reference = reference;
                this.forme = forme_defaut;
     
                this.forme.Background = sa_couleur;
     
                this.couleur = new LinearGradientBrush();
     
     
                GradientStop gradient1 = new GradientStop(Color.FromRgb(0, 0, 0),0);
                GradientStop gradient2 = new GradientStop(sa_couleur.Color,1);
                GradientStopCollection grad = new GradientStopCollection(2);
                grad.Add(gradient1);grad.Add(gradient2);
     
                this.couleur.StartPoint = new Point(0.5, 0);
                this.couleur.EndPoint = new Point(0.5, 1);
                this.couleur.GradientStops = grad;
     
                plateau = createur;
     
                this.forme.Height = this.forme.Width = 300;
                this.forme.Focusable = false;
                this.forme.Background = couleur;
                this.forme.Name = "piece"+reference.ToString();
     
                NameScope.SetNameScope(this.forme, new NameScope());
     
                this.forme.RegisterName(this.forme.Name, this.forme);
     
            public void testanim()
            {
                Storyboard story = new Storyboard();
                ColorAnimation anim = new ColorAnimation();
     
                anim.From = this.couleur.GradientStops[1].Color;
                anim.To = Color.Multiply(this.couleur.GradientStops[1].Color,3);
                anim.Duration = new Duration(TimeSpan.FromSeconds(1));
                anim.AutoReverse = true;
                anim.RepeatBehavior = RepeatBehavior.Forever;
     
                story.Children.Add(anim);
                Storyboard.SetTargetName(anim,this.forme.Name);
                Storyboard.SetTargetProperty(anim,new PropertyPath(this.forme.Background.DependencyObjectType.Name));
                story.Begin();
            }

    c'est la premiere fois que je fais une application WPF avec des annimations,

    j'ai trouvé ce post:
    http://www.developpez.net/forums/d83...er-path-perso/

    mais je ne comprend pas tout.

    Merci.

  2. #2
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Salut yrtera

    Essaie

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Storyboard story = new Storyboard();
    ColorAnimation anim = new ColorAnimation();
     
    anim.To = Colors.Red;
    anim.BeginTime = TimeSpan.FromSeconds(0);
    anim.Duration = new Duration(TimeSpan.FromSeconds(1));
     
    story.Children.Add(anim);
    Storyboard.SetTarget(anim, btBase);
    Storyboard.SetTargetProperty(anim, new PropertyPath("(Button.Background).(SolidColorBrush.Color)"));
    story.Completed += new EventHandler(story_Completed);
    story.Begin();

    En mettant bien une couleur par défaut à ton bouton

    @+

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut
    bonjour,

    Merci Koyot3 pour ta reponse,

    comme tu me l'as dit, j' ai mis:

    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
            public void testanim()
            {
                Storyboard story = new Storyboard();
                ColorAnimation anim = new ColorAnimation();
     
                anim.To = Colors.Black;
                anim.BeginTime = TimeSpan.FromSeconds(0);
                anim.Duration = new Duration(TimeSpan.FromSeconds(1));
     
                story.Children.Add(anim);
                Storyboard.SetTarget(anim, this.forme);
                Storyboard.SetTargetProperty(anim, new PropertyPath("(Button.Background).(SolidColorBrush.Color)"));
                story.Completed += new EventHandler(story_Completed);
                story.Begin();
     
            }
     
            void story_Completed(object sender, EventArgs e)
            {
                MessageBox.Show("ok");
            }
    dans ma classe objet.
    j' ai bien la messagebox qui apparait mais je ne vois pas l'animation a l'écran.

    je te met donc la méthode que j'utilise pour lancer mon anim:

    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
                foreach (int v in chaine)
                {
     
                    foreach (element el in pieces)
                    {
                        if (touche == el.reference)
                        {
                            el.testanim();
                            actualiseraffichage();
                        }
                    }
                }
            }
     
            public void actualiseraffichage()
            {
                grille.Children.Clear();
     
                foreach (element ele in pieces)
                {
                    grille.Children.Add(ele.forme);
                }
            }
    cette méthode se trouve dans le fichier xaml.cs de mon user control.

    j'avais tenté en mettant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
           foreach (int v in chaine)
                {
     
                    foreach (element el in pieces)
                    {
                        if (touche == el.reference)
                        {
                            el.forme.Background = new SolidColorBrush(Colors.Black);
                            actualiseraffichage();
                        }
                    }
                }
    ca fonctionne bien mais le background du bouton reste a noir, si tu as une solution pour que le background revienne a sa couleur "d'origine" et a mettre un timer, ca me va aussi.

    Mais j'aimerais bien arriver a utiliser l'animation.

    Merci.

  4. #4
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Mon animation ne fonctionne pas dans ton cas car tu as un bouton avec le style par défaut. Et ce dernier contient un dégradé en background, donc quand tu veux changer la couleur globale ça ne chnage rien...

    Si tu veux garder le style par défaut du bouton (avec dégradé) remplace ça dans mon code précédent :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    new PropertyPath("Background.GradientStops[0].Color");

    Comme ça tu change la couleur 1 du dégradé du background du bouton.
    Et si tu veux changer aussi la deuxième (en gros le dégradé entièrement) et ben tu rajoute une ColorAnimation à ta storyboard en changeant l'index de la couleur.

    Et pour revenir à l'état d'origine :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    anim.AutoReverse = true;

    En espérant t'avoir aidé

    @+ et bon courage

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Par défaut
    CA MARCHE !!!

    j'ai rajouté une anim pour la deuxieme couleur.

    trop top koyot3 merci merci

    a+

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

Discussions similaires

  1. [Débutant] Animation Grid couleur wpf
    Par ThomasF dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 02/10/2014, 01h11
  2. Probleme de animation bouton
    Par TDCmystere dans le forum Flash
    Réponses: 2
    Dernier message: 02/03/2008, 18h42
  3. probleme de menus animé (boutons/clips)
    Par kerann dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 06/09/2007, 13h08
  4. Access Animation Bouton
    Par VEUVEAMIOT dans le forum IHM
    Réponses: 2
    Dernier message: 24/07/2007, 16h06
  5. [FLASH MX2004] .. bouton animation ? a l'aide
    Par Hktetraede dans le forum Flash
    Réponses: 1
    Dernier message: 17/08/2005, 20h00

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