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

Silverlight Discussion :

Insérer une image - position de la souris


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut Insérer une image - position de la souris
    Bonjour à tous,

    Je réalise une application qui doit permettre de cibler des défauts sur un patron (textile).
    Pour cela, je récupère la position de la souris sur laquelle je souhaite placer une image représentant le point de défaut.

    Je parviens facilement à récupérer la position de la souris mais pas à placer l'image!

    Je précise que l'image n'est pas sur la scène mais dans l'arborescence du projet.
    Pour chaque défaut, je souhaite placer une occurrence différente de cette image.

    Voici de XAML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <controls:TabItem Header="Vetement - Recto" Name="tabItem1">
     
                    <Canvas Background="AliceBlue" x:Name="Vetement">    
                        <Polygon Name="MancheGauche" Points="30 50 30 100 70 110 70 50" Fill="Red" MouseMove="Get_Pos" MouseLeave="Reset_Pos" MouseLeftButtonUp="Send_Default" />
                        <Polygon Name="ZoneMilieu" Points="70 50 200 50 200 200 70 200" Fill="Black" MouseMove="Get_Pos" MouseLeave="Reset_Pos" MouseLeftButtonUp="Send_Default"/>
                        <Polygon Name="MancheDroite" Points="200 50 200 110 240 100 240 50" Fill="Red" MouseMove="Get_Pos" MouseLeave="Reset_Pos" MouseLeftButtonUp="Send_Default" />
                    </Canvas>
     
    </controls:TabItem>
    Et voici le code:
    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
    private void Send_Default(object sender, MouseButtonEventArgs e)
            {
                try
                {
                    Shape root = (Polygon)e.OriginalSource;
     
                    this.x = e.GetPosition(relativeTo: (Polygon)e.OriginalSource).X;
                    this.y = e.GetPosition(relativeTo: (Polygon)e.OriginalSource).Y;
     
                    Image image = new Image();
                    Uri uri = new Uri("/Images/viseur.jpg", UriKind.Relative);
     
                    ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
                    image.Source = img;
     
                    this.Vetement.Children.Add(image);
     
                    Canvas.SetLeft(image, this.x);
                    Canvas.SetTop(image, this.y);
                    Canvas.SetZIndex(image, 100);
     
                    MessageBox.Show("Votre défaut à été pris en compte sur la zone '" + root.Name + "' Coordonnées X=" + this.x + " Y=" + this.y);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Merci par avance de votre aide.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tu as essayé ca plutôt ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Canvas.SetLeft(image, this.x);
    Canvas.SetTop(image, this.y);
    Canvas.SetZIndex(image, 100);
     
    this.Vetement.Children.Add(image);

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    T'as vérifié les valeurs de this.x et this.y ?

    Ton Canvas fait bien toute la taille de ton TabItem ? Je rappelle qu'un Canvas n'a pas de taille si on n'en spécifie pas.

  4. #4
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Bonjour à tous et merci!

    J'ai inversé comme cela, mais le résultat est le même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Canvas.SetLeft(image, this.x);
    Canvas.SetTop(image, this.y);
    Canvas.SetZIndex(image, 100);
     
    this.Vetement.Children.Add(image);
    J'ai également dimensionné le canvas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Canvas Background="AliceBlue" x:Name="Vetement" Height="250" Width="300" >
    J'ai vérifier mes variables x et y: elles récupèrent bien les bonnes valeurs.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Tu cliques bien sur tes Polygon ? Si tu met un point d'arrêt sur cette ligne, tu y passe bien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shape root = (Polygon)e.OriginalSource;

  6. #6
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2007
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2007
    Messages : 173
    Par défaut
    Effectivement, il rentre bien dedans.

    J'ai d'ailleurs rajouter cette ligne (pour le debug), en mettant un point d'arrêt dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string polName = root.Name;
    Il me récupère bien le nom du Polygon.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2004, 08h54
  2. [CR] insérer une image paramétrer dans une étiquette
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 22/08/2004, 11h58
  3. [GNU Pascal] [GRX] Insérer une image
    Par the_guitariste dans le forum Autres IDE
    Réponses: 5
    Dernier message: 28/04/2004, 18h24
  4. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06
  5. [CR7] Insérer une image dynamiquement
    Par yoloosis dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 28/07/2003, 09h54

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