Bonjour à tous,

Je fait actuellement un petit logiciel me permettant d'exporter un synoptique en XML afin que mes autres logiciels créer ce synoptique de façons dynamique.

J'ai donc fait un soft ou j'ai une base d'objet graphique (des picturebox, textbox, label...). Je clique sur l'un de ces objets et il se place dans un groupebox. Ce qui sera contenu dans le groupbox sera exporté (type d'objet, coordonnées, tailles et plein d'autre paramètres que je donnerais aussi lors de la création de l'objet) afin donc de créer dynamiquement la même chose dans les autre logiciel.

La création dans les autres logiciels fonctionne deja, mais je me tape le XML à la main. C'est barbant surtout si l'on me change le synoptique ou j'ai toutes les coordonnées à modifier.

Revenons à mon souci après cette petite présentation.

Mes objets graphiques sont relier entre eux par des lignes, et c'est la mon souci. en VB6 il y a "line" ou l'on a juste à créer une ligne puis à en modifier les paramètres par x1,x2,y1,y2 si l'on souhaite la bouger.

L'idéal:

Que je puisse donc créer une ligne puis la déplacer soit par le centre (ou presque) pour déplacer la ligne intégralement. Soit déplacer uniquement les terminaisons. Et le top du top serait que ces lignes s'aligne avec le centre des picturebox suivant le coté du raccordement

Pour déplacer les picturebox à l'aide de la souris j'ai utilisé cela:
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
    Private Const WM_NCLBUTTONDOWN = &HA1
    Private Const HTCAPTION = 2
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                 (ByVal hwnd As Integer, ByVal wMsg As Integer, _
                  ByVal wParam As Integer, ByVal lParam As String) As Integer
    Private Declare Sub ReleaseCapture Lib "user32" ()
 
    'Déplacement de la PictureBox
 
    Private Sub pictBox_MouseMove(ByVal sender As PictureBox, ByVal e As System.Windows.Forms.MouseEventArgs)
        Dim lHwnd As Integer
        lHwnd = sender.Handle
        If lHwnd = 0 Then Exit Sub
        ReleaseCapture()
        SendMessage(lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)
 
    End Sub
Lors de la création dynamique des picturebox j'associe Evènements.

Pour la création de la ligne j'ai vu que l'on pouvait utiliser System.Drawing.Pen, mais je n'arrive pas pour le moment à l'utiliser, surtout pour le déplacement par la suite et récupérer ces 4 coordonnées que je stock dans une collection pour la création du XML.

Le début de mon prog, il manque encore pleins d'objets
Nom : 1.png
Affichages : 294
Taille : 67,2 Ko

Une fois que je sélectionne l'un des objets, j'indique pas mal de chose, mais j'en ai encore à rentrer.
Nom : 2.png
Affichages : 300
Taille : 18,8 Ko

L'objet insert dans le groupbox
Nom : 3.png
Affichages : 267
Taille : 33,4 Ko

Je le deplace à l'aide de la souris
Nom : 4.png
Affichages : 292
Taille : 31,4 Ko

Voila après plusieurs insertions.
Nom : 5.png
Affichages : 303
Taille : 69,7 Ko
En bas on voie les coordonnées du dernier objet que j'ai déplacé (4 coordonnées pour les lignes bien sur), je peux aussi saisir les coordonnées afin de les aligner parfaitement.
Il reste donc les lignes à ajouter.

Merci de votre aide