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 :

probleme lors d'une création d'animation par le code


Sujet :

Windows Presentation Foundation

  1. #1
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut probleme lors d'une création d'animation par le code
    Bonjour tout le monde,

    depuis ce matin, j'essaie d'appliquer une animation à un de mes contrôles, pour un certain évènement donné.

    Voilà le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Anim(ByVal sender As Object, .....)
    Dim STB As Storyboard = New Storyboard
    Dim Anim As DoubleAnimation = New DoubleAnimation
    Storyboard.SetTargetProperty(Anim, New PropertyPath(OpacityProperty)
    Storyboard.SetTargetName(xAnim, sender/toString)
    
    Anim.To = 0
    STB.Children.Add(Anim)
    STB.Begin()
    End Sub
    Le problème est que la méthode begin attend un paramètre et je ne sais pas quoi lui passer.

    Pourriez vous m'expliquer cela ?
    Merci d'avance
    Finality

  2. #2
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Si tu met STB.Begin(Me) ?

  3. #3
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    J'ai bien essayé cela mais j'ai obtenu cette erreur :

    Impossible de trouver le nom "System.Windows.Controls.Image" dans la portée de nom "Media_WPF.Window1"
    Tu sais d'où cela vient ?
    Merci pour ton aide

  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
    Normalement, la méthode Begin prend en paramètre l'instance du contrôle qui héberge l'animation donc STB.Begin(Me) donc convenir dans la majorité des cas. Dans ton cas, tu semble avoir un problème lorsque tu fais le SetTargetName: montre nous ton code exact

  5. #5
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Oki alors voilà mon code :

    tout d'abord, je déclare ma variable Image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private PicTitreAcc As Image
    Ensuite, je définis ces paramètres, lui ajoute un évènement et la rajoute à ma fenêtre :
    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
     
    Private Sub Intialiser()
     
       PicTitreAcc = New Image
     
       With PicTitreAcc
    	.Width = 150
    	.Height = 150
    	.Name = "PicTitreAcc"
    	.Source = New BitmapImage(New Uri(...))
       End With
     
       AddHandler PicTitreAcc.MouseEnter, AdressOf ImageSur
     
       'LayerRoot est la grille de ma fenêtre
       LayerRoot.Children.Add(PicTitreAcc)
     
    End Sub
    Et voici la procédure correspondante à l'évènement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub ImageSur(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs)
     
    	Dim STB As Storyboard = New Storyboard
    	Dim Anim As DoubleAnimation = New DoubleAnimation
    	Storyboard.SetTargetProperty(Anim, New PropertyPath(OpacityProperty))
    	Storyboard.SetTargetName(Anim, sender.Name)
     
    	Anim.To = 0
    	STB.Children.Add(Anim)
    	STB.Begin(me)
    Et voilà le message d'erreur que j'obtiens :
    Impossible de trouver le nom "PicTitreAcc" dans la portée de nom de "Media_WPF.Window1"
    Je vous remercie d'avance pour votre aide
    Cordialement
    Finality

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 156
    Points : 173
    Points
    173
    Par défaut
    Je n'ai jamais fais de VB, mais il me semble que tu ne peux pas accéder à ta variable "PicTitreAcc" car elle n'est pas déclarer dans la même classe. Ou privé dans une classe mère.

  7. #7
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Bonjour,

    ma variable PicTitreAcc est bien déclarée dans la même classe (Window1) que celle où est décrite ma procédure.

    De plus, si je la passe de Private à Public, il ne se passe aucun changement : l'erreur est toujours la même.

    Une autre idée ?

    (PS : merci pour ton aide )

  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
    Tu as regardé ce que contenait sender.Name ? Cela te renvoit bien PicTitreAcc ?

    Pense aussi à utiliser les scopes (cf: http://msdn.microsoft.com/en-us/library/ms752312.aspx):

    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
    Private Sub Intialiser()
     
       NameScope.SetNameScope(Me, new NameScope())
     
       PicTitreAcc = New Image
     
       With PicTitreAcc
    	.Width = 150
    	.Height = 150
    	.Name = "PicTitreAcc"
    	.Source = New BitmapImage(New Uri(...))
       End With
     
       Me.RegisterName(PicTitreAcc.Name, PicTitreAcc)
     
       AddHandler PicTitreAcc.MouseEnter, AdressOf ImageSur
     
       'LayerRoot est la grille de ma fenêtre
       LayerRoot.Children.Add(PicTitreAcc)
     
    End Sub

  9. #9
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Bonsoir,

    Magique ton code fonctionne à merveille

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.RegisterName(PicTitreAcc.Name, PicTitreAcc)
    Si je comprends bien, cela consiste à lier le Name à l'objet en question, c'est biien cela ?

    Je te remercie énormément pour ton aide (ainsi que tous ceux qui ont participé )

    Cordialement,
    Finality

  10. #10
    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
    Citation Envoyé par Finality Voir le message
    Si je comprends bien, cela consiste à lier le Name à l'objet en question, c'est biien cela ?

    Oui, tu peux simplifier comme ca

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

Discussions similaires

  1. Probleme de résultats lors d'une création de vue
    Par Devilstuff dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/02/2011, 13h45
  2. [ZF 1.7] Probleme lors de la création d'une aide de vue
    Par miya dans le forum Zend Framework
    Réponses: 6
    Dernier message: 01/06/2009, 23h03
  3. Probleme lors d'une recherche sur les forums
    Par JUSTIN Loïc dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 8
    Dernier message: 27/07/2005, 12h22
  4. Probleme lors d'une suppression
    Par DrTank dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2005, 17h38
  5. Réponses: 13
    Dernier message: 10/05/2004, 16h49

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