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

VB.NET Discussion :

Insérer shape depuis click souris [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 14
    Par défaut Insérer shape depuis click souris
    Bonjour,

    Tout d'abord, je tiens à remercier tous les contributeurs de ce super site qui permmettent à des gens comme moi de profiter d'une source de connaissance illimitée!

    Bon, voici mon problème. Certains d'entre vous vont trouver ça enfantin, mais si je pose la question, c'est que j'ai cherché de mon côté et que je n'ai pas trouvé satisfaction.

    Dans une Form, j'ai un Chart avec des courbes que j'ai tracées.

    Je souhaiterais pouvoir insérer un ovalshape sur le Chart en cliquant sur la souris à l'endroit exact où j'ai cliqué.

    Je suis parvenu à insérer un ovalshape, mais je n'arrive pas à l'insérer à l'endroit où j'ai cliqué.

    Je pensais à un truc du genre myshape.location (mouseposition.X, mouseposition.Y), mais il me dit qu'une valeur type 'Single' ne peut pas être convertie en 'System.Drawing.Point'.

    J'espère avoir été clair.

    [EDIT]

    Je suis parvenu à contourner l'erreur mais je n'arrive plus à dessiner la forme

    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
    Dim canvas As New ShapeContainer
     
            Dim theShape As New OvalShape
     
            canvas.Parent = Me
     
            theShape.Parent = canvas
     
     
            Dim ax As Single = Control.MousePosition.X
            Dim ay As Single = Control.MousePosition.Y
     
            TextBox4.Text = ax
            TextBox3.Text = ay
     
     
            theShape.Size = New System.Drawing.Size(10, 10)
            theShape.Location = New System.Drawing.Point(ax, ay)

    Merci à vous.

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Essaie en faisant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myShape.Location = New Point(mouseposition.X, mouseposition.Y)

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 14
    Par défaut
    Citation Envoyé par griftou Voir le message
    Essaie en faisant ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myShape.Location = New Point(mouseposition.X, mouseposition.Y)
    Merci ça a marché!
    J'ai mis une 2 textbox pour vérifier les que les coordonnées soient justes, elles le sont.
    Cependant, la shape ne s'affiche pas? enfin si mais pas correctement.

    2 choses :

    - le shape s'affiche mais derrière le chart, je souhaiterais qu'elle s'affiche dessus.
    - la shape ne s'insère pas exactement à l'endroit du clique, il y a un décalage vers le bas constant.

    Merci à vous!

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Peux-tu montrer le code "complet" de l'ajout de ta shape ?

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 14
    Par défaut
    Voici le début du code en question

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Public Sub Chart1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Chart1.Click
     
            Dim canvas As New ShapeContainer
            Dim theShape As New OvalShape
            canvas.Parent = Me
            theShape.Parent = canvas
     
            Dim ax As Single = Control.MousePosition.X
            Dim ay As Single = Control.MousePosition.Y
     
            theShape.Size = New System.Drawing.Size(10, 10)
            theShape.Location = New System.Drawing.Point(ax, ay)
    La shape s'insère au clique de la souris, mais pas à l'endroit exact. Deplus, elle reste en arrière plan alors que je désirerai qu'elle s'affiche par dessus le Chart1.

    Merci encore!

    [EDIT] j'ai réussi à résoudre le problème d'arrière plan en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    canvas.parent=Me
    'par
    canvas.parent=Me.chart1
    Cependant, j'ai toujours le problème du décalage.

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    C'est parce que "Control.MousePosition" te donne les coordonnées de la souris par rapport à l'écran et pas par rapport au parent. Du coup, ce ne sera jamais à la bonne place ^^.

    Il y a surement plus direct mais pour avoir facilement la position de la souris, personnellement, je passerais pas l'event MouseDown.

    Dans cet event, la variable "e" a une propriété "Location" qui te donne directement la position de l'endroit du clic.

    EDIT : Pour avoir la bonne position sans passer par l'event MouseDown, je pense qu'il faut regarder du côté de la fonction PointToClient (ou qqch d'approchant).

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

Discussions similaires

  1. [C#] Simuler un Click souris
    Par helmout dans le forum Windows Forms
    Réponses: 13
    Dernier message: 13/12/2007, 01h59
  2. Actions liés à un ou deux clicks souris
    Par ceres02 dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 04/04/2006, 14h54
  3. [J2SE] selection dans jList par click souris
    Par rupteur dans le forum Composants
    Réponses: 6
    Dernier message: 01/12/2005, 12h36
  4. Simulation de click souris
    Par Nats dans le forum Windows
    Réponses: 5
    Dernier message: 07/02/2005, 20h51
  5. [Kylix] Simluler des click souris
    Par paci dans le forum EDI
    Réponses: 2
    Dernier message: 24/06/2003, 11h23

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