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

Framework .NET Discussion :

[WPF-Blend] Plusieurs objets mais une seule animation


Sujet :

Framework .NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut [WPF-Blend] Plusieurs objets mais une seule animation
    Bonjour,

    Pour faire simple on va dire que j'ai créé un tableau de rectangle (8x8).
    Ils sont blanc et lorsque je passe le curseur dessus ils deviennent noirs.

    Là où ça se complique c'est que lorsque je passe le curseur sur le rectangle au coordonné 2x2, je voudrais que les 4 rectangles (1,1;1,2;2,1;2,2) devienne noir aussi.
    Pour mieux me faire comprendre:

    Quand mon curseur est en 2,2 il faudrait que les 4 carré deviennent noir.

    Donc comment je peux faire le plus simplement? Car je vois bien comment faire avec une méthode longue et fastidieuse... mais ça va etre long à faire sur 64 rectangles.

    Merci d'avance

  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
    Hum... Tu t'abonnes à l'event MouseOver de tes rectangles. Une fois que c'est fait, dans le délégué, tu fais un simple calcul pour récupérer les rectangles qui sont autour du tien et donc changer la couleur...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    J'ai oublié de dire quelque chose d'important:
    J'ai créé un timeline pour changer progressivement la couleur du rectangle.
    Comment je fais pour appeler un timeline à partir du code C# (donc après avoir fait le calcul dont tu parle) ?
    Et surtout comment je fais pour que mon timeline qui est initialement prévu pour changer la couleur de mon rectangle 1,1; change fonctionne sur le rectangle 1,2?
    D'où le titre de mon topic.

  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
    Je vois plusieurs solutions. Tu pourrais par exemple accéder aux ressources de ta Window et à partir de là, accéder à ta TimeLine. Une fois que tu là, tu peux lui spécifier la cible et ensuite lancer cette Timeline.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Je chercher, je cherche mais comment je fais ça?

    Dans VS 2008, je me suis abonné à l'évenement MouseEnter de mon deuxieme rectange.
    Dedans, il faut que je fasse quoi?

    J'ai accès à mon timeline:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnMouseEnterRectangle_BeginStoryboard
    Mais comment je lui dit de marché sur mon deuxieme rectangle?
    Avec la méthode SetValue?

  6. #6
    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
    Il faut que tu modifier le Storyboard.TargetValue (SetValue en C#) normalement. Essaye de faire une petite recherche sur Internet avant de te lancer

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Merci,

    Donc en fouillant un peu je pense avoir trouvé quelque chose de pas mal grâce à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnMouseEnterRectangle_BeginStoryboard.SetValue(Storyboard.TargetNameProperty, rectangle1.Name);
    Que j'ai mis dans l'evenement MouseMove de mon rectangle1 (le storyboard de base est fait pour le rectangle0)
    Donc si je marque juste ça rien ne change! Il ne se passe rien!

    Si je fais un Storyboard.Begin(...) et bien sa me démarre l'animation sur le rectangle0, pourtant j'ai changé le targetname en rectangle1

    Qu'est-ce que j'ai oublié?
    Je vais continuer a chercher... mais c'est pas évident.. pas beaucoup de source sur le net :s

  8. #8
    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
    Question bête: tu es sur que rectange1.Name te renvoit bien quelque chose ?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    Oui oui, rectangle1.Name return un string: "rectangle1"

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    J'ai modifier mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Storyboard stb = (Storyboard)this.Resources["OnMouseEnterRectangle"];
     
    stb.SetValue(Storyboard.TargetNameProperty, ((System.Windows.Shapes.Rectangle)sender).Name);
    stb.Begin((System.Windows.Shapes.Rectangle)sender);
    Mais ça produit le meme effet! Toujours le meme rectangle qui est animé!

  11. #11
    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
    Là, je comprend pas ce qu'il se passe....

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 101
    Points : 38
    Points
    38
    Par défaut
    J'ai eu une réponse sur les forums MSDN.

    En faite il faut rendre son storyboard indépendant des objects!
    Donc en XAML mon Storyboard, j'ai du lui enlever la propriété TargetName.
    J'ai du aussi enlever les triggers sur mon rectangle.

    Et enfin dans le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Storyboard stb = (Storyboard)this.Resources["OnMouseLeaveRectangle"];
    stb.Begin((Rectangle)sender);
    Ce qui va animer l'objet que je demande!

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

Discussions similaires

  1. Plusieurs objets en une seule boucle
    Par austin57 dans le forum Général Python
    Réponses: 3
    Dernier message: 13/02/2014, 22h26
  2. [AC-2010] Liste déroulante avec plusieurs colonnes mais une seule affichée
    Par scorpking dans le forum IHM
    Réponses: 2
    Dernier message: 23/01/2014, 13h07
  3. Plusieurs inconnus mais une seul équation
    Par soft001 dans le forum Mathématiques
    Réponses: 13
    Dernier message: 09/04/2012, 14h47
  4. [AC-2003] Envoi de plusieurs objets via une seule macro
    Par Skoat dans le forum Access
    Réponses: 9
    Dernier message: 03/11/2009, 16h42
  5. Réponses: 11
    Dernier message: 22/04/2008, 15h32

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