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 Forms Discussion :

[VB.net] changer les coordonnées d'un Point dans un Path


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 71
    Points
    71
    Par défaut [VB.net] changer les coordonnées d'un Point dans un Path
    Bonjour,

    le petit programme ci-dessous me permet de dessiner un path, ( un série de ligne ), les points etant définis au debut du programme.

    Lors de l'appui sur un bouton de la souris, je vérifie si le curseur se trouve sur un point et si c'est le cas, les coordonnées du point doivent prendre celle de la souris. Ce qui devrait me permettre de changer le point de place.

    Le problême, c'est que les coordonnées ne prennent pas le changement.
    Quelqu'un peu m'éclairer ? parce que mon code a l'air bon, je récupére le bon point, les bonne coordonnées etc...

    merci
    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
     
        Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
            Dim i As Integer 'variable d'incrémentation
            Dim SurPoint As Integer 'point sélectionné dans le tableau(path)
            Dim TestSurPoint As Boolean = False 'initialisé a false, passe a true si ont est sur un point
            For i = 0 To path.PointCount - 1 'pour chaque point
                If e.X > (path.PathPoints(i).X - 5) And e.X < path.PathPoints(i).X + 5 Then
                    If e.Y > (path.PathPoints(i).Y - 5) And e.Y < path.PathPoints(i).Y + 5 Then
                        TestSurPoint = True 'passe a true car le curseur est sur le point a +-5px près
                        SurPoint = i 'chope sur quel point on se trouve
                    End If
                End If
            Next
            Label5.Text = "test= " & TestSurPoint
            If TestSurPoint = True Then ' si on est sur le point ( et donc que le bouton de la souris est apuyé )
                path.PathPoints(SurPoint).X = e.X ' alors on déplace en x
                path.PathPoints(SurPoint).Y = e.Y ' et en Y
                Me.Update()
            End If
        End Sub

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 71
    Points
    71
    Par défaut
    C'est bon, j'ai trouvé ce qui n'allait pas.
    Je ne suis pas sur que ce soit la meilleur maniére mais bon.

    En fait, j'ai fait un "copier-coller" du path dans un nouveau path_save en changeant uniquement le point qui devait être modifié.
    Ensuite je détruit le path, je le reconstruit et lui remet tout dedans (path=path_save).

    Je redessine la zone et sa marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                path.Dispose()
                path = New System.Drawing.Drawing2D.GraphicsPath
                path = path_save
                Me.Invalidate()

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 57
    Points : 57
    Points
    57
    Par défaut
    Ne serait-ce pas plutôt le Me.Update() en Me.Invalidate() qui fait marcher le truc ?

    car écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                path = New System.Drawing.Drawing2D.GraphicsPath
                path = path_save
    me semble étrange pour que cela fonctionne

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Points : 71
    Points
    71
    Par défaut
    j'ai essayé le me.update mais je n'obtient aucun résultat, il ne redessine pas ma fenetre et les coordonnées restent inchangées dans le path.

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

Discussions similaires

  1. [XL-2003] Obtenir les coordonnées d'un point dans un graph en cliquant dessus
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2010, 11h09
  2. Sauvegarder les coordonnées d'un point dans une figure 3D
    Par Jean Dumoncel dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/11/2009, 13h28
  3. Réponses: 4
    Dernier message: 27/11/2006, 18h06
  4. Réponses: 1
    Dernier message: 09/11/2006, 13h34
  5. [GRAPHIQUE] Récupérer les coordonnées d'un point
    Par freud dans le forum Composants VCL
    Réponses: 6
    Dernier message: 29/09/2005, 12h31

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