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 Phone .NET Discussion :

Touch.FrameReported avec un Canvas [Débutant]


Sujet :

Windows Phone .NET

  1. #1
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut Touch.FrameReported avec un Canvas
    Hello,

    J'ai mis en place une gestion de plusieurs points sur un Canvas avec dans un premier temps la détection des actions Down:

    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
    29
    private void Touch_FrameReported(object sender, TouchFrameEventArgs e)
    {
      // Itération dans les points
      foreach(System.Windows.Input.TouchPoint CurrentTouchPoint in e.GetTouchPoints(this.CanvasFirewall))
      {
        // Analyse de l'action du point
        switch(CurrentTouchPoint.Action)
        {
          case TouchAction.Down:
     
            #region Gestion des descentes
     
              // Analyse du type de l'objet en dessous de la touche
              if(CurrentTouchPoint.TouchDevice.DirectlyOver is Image)
              {
                 // Récupération de l'objet image
                 Image CurrentImage = CurrentTouchPoint.TouchDevice.DirectlyOver as Image;
                 // Analyse du nom de l'image
                 if(CurrentImage.Name.StartsWith("Atom#"))
                 {
                    // Initialisation d'un point suivi
                    TrackedTouchPoint NewTrackedTouchPoint = new TrackedTouchPoint(CurrentTouchPoint.TouchDevice.Id,CurrentTouchPoint.Position);
                    // Ajout du point dans la collection
                    this.TrackedTouchPoints.Add(NewTrackedTouchPoint);
                  }
                }
     
             #endregion
    ...
    Et ensuite la gestion des actions move:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    ...
    case TouchAction.Move:
     
      #region Gestion des mouvements
     
       // Analyse du type de l'objet en dessous de la touche
       if(CurrentTouchPoint.TouchDevice.DirectlyOver is Image)
       {
         // Récupération de l'objet image
         Image CurrentImage = CurrentTouchPoint.TouchDevice.DirectlyOver as Image;
         // Analyse du nom de l'image
         if(CurrentImage.Name.StartsWith("Atom#"))
         {
           // Recherche du point dans la liste des points précédents
           foreach(TrackedTouchPoint PreviousCurrentTouchPoint in this.TrackedTouchPoints)
           {
             // Comparaison des identifiants
             if(CurrentTouchPoint.TouchDevice.Id == PreviousCurrentTouchPoint.ID)
            {
              // Mise à jour de la transformation de l'image
              ((CompositeTransform)CurrentImage.RenderTransform).TranslateX += System.Math.Round(CurrentTouchPoint.Position.X - PreviousCurrentTouchPoint.Position.X,0);
              // Mise à jour de la transformation de l'image
              ((CompositeTransform)CurrentImage.RenderTransform).TranslateY += System.Math.Round(CurrentTouchPoint.Position.Y - PreviousCurrentTouchPoint.Position.Y,0);
              // Mise à jour de la position du point suivi
              PreviousCurrentTouchPoint.Position = CurrentTouchPoint.Position;
     
              this.TextBlockDeltaX.Text = "X= " + CurrentTouchPoint.Position.X.ToString();
              this.TextBlockDeltaY.Text = "Y= " + CurrentTouchPoint.Position.Y.ToString();
     
              // Sortie
              break;
            }
          }
        }
      }                                
     
      #endregion
    ...
    Dans le Canvas se trouve 4 images qui peuvent être déplacées. Si j'en prend une et que je la déplace en direction d'une autre il se passe deux choses:

    1. L'image passe dessus/dessous l'autre et la deuxième ne bouge pas.

    2. L'image passe dessus/dessous l'autre et les deux bougent.

    Et là je comprends pas pourquoi vue que je fais une identification de l'Id !

    J'ai l'impression que l'ordre d'ajout dans la collection Children du Canvas à un impact sur l'interaction ....

    Merci
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  2. #2
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    J'ai l'impression que l'ordre d'ajout dans la collection Children du Canvas à un impact sur l'interaction
    Oui ! Plus les images dans ton canvas son proche de la balise fermante plus ils sont au sommet de la représentation. Heureusement comme tu travailles dans un Canvas tu peux te servir de Canvas.ZIndex pour changer ça !

    http://msdn.microsoft.com/en-us/libr...(v=vs.95).aspx
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  3. #3
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Hello,

    oui j'y avais pensé mais je n'y arrive pas vu que je crée mes images par le code !

    Je n'ai pas trouvé comment paramétrer la propiété ZIndex de mon objet Image.

    Mais merci pour le lien c'est super intéressant ...
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  4. #4
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Pour ajouter une DependencyProperty à ton image ça se passe comme ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image image = new Image();
    image.SetValue(Canvas.ZIndexProperty, 10);
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  5. #5
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Ah....

    C'est donc à ça que sert ce SetValue !!!!

    Et bien merci bien parce que celle là je ne l'aurais jamais trouvé tout seul
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

  6. #6
    Membre expérimenté Avatar de DotNET74
    Homme Profil pro
    Watch R&D Engineer & Apprenti .NET
    Inscrit en
    Août 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Watch R&D Engineer & Apprenti .NET

    Informations forums :
    Inscription : Août 2003
    Messages : 1 986
    Points : 1 453
    Points
    1 453
    Par défaut
    Fonctionne pas ....

    pas de propriété ZIndexProperty en vue dans l'IntelliSense
    La Théorie c'est quand on comprends tout mais que rien ne fonctionne.
    La Pratique c'est quand tout fonctionne mais qu'on ne sait pas pourquoi !

    Si vous aimez ma réponse, cliquez sur la main verte Merci

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

Discussions similaires

  1. Comment intercepter une touche clavier avec un projet GUI
    Par guitz2fr dans le forum Débuter
    Réponses: 12
    Dernier message: 24/06/2008, 21h50
  2. Réponses: 6
    Dernier message: 07/03/2008, 01h50
  3. Touche "entrée" avec une listview
    Par chrisviper dans le forum IHM
    Réponses: 9
    Dernier message: 22/01/2008, 22h25
  4. touche entrée avec WebObject
    Par SylvainCRI dans le forum Autres langages pour le Web
    Réponses: 0
    Dernier message: 23/08/2007, 16h16
  5. speed touch 536 avec le pack club-internet
    Par framul dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 10/03/2006, 11h55

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