[VB.Net] Créer rectangle

Signaler
Messages postés
254
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 avril 2010
-
Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007
-
    Salut à tous,

Comment créer un rectangle sur une form comme le fait photoshop c'est à dire que l'on voit le rectangle se "dérouler" en voyant le point de départ et le point d'arrivée.

De plus il faudrait qu'il se créé de l'endroit où l'on clique et qu'il se termine là où l'on relache le clic. Je pense qu'il faudrait faire un peut dans ce genre :

Sub Form1_mousedown...
    'le code
End sub
Sub Form1_mouseup...
    'le code
End sub

Mais en plus quand je créé le rectangle il se commence ailleurs que là où j'ai cliqué.

Je n'y comprend rien

Merci de votre aide

Swan94

3 réponses

Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

Salut,


Il faut que tu enregistres les coordonnées où tu cliques, comme par exemple :
Sub Form1_MouseDown(... e As...)      XSel e.X: YSel e.Y
End Sub

Ensuite, quand tu maintiens enfoncé la souris (et uniquement dans ce cas) tu trace le rectangle.

Sub Form1_MouseMove(...)
   If e.Button = ... (retrouve le clic droit ou gauche selon le cas) Then
      'Selon que ta souris est passée à gauche de ton point d'origine ou à droite
      'Idem avec haut et bas, et en appelant Rectangle la fonction traçant le rectangle :
      If e.X < XSel And e.Y < YSel Then
         Rectangle(e.X, e.Y, XSel - e.X, YSel - e.Y)
      ElseIf e.X < XSel And e.Y >= YSel Then
         Rectangle(e.X, YSel, XSel - e.X, e.Y - YSel)
      ElseIf e.X >= XSel And e.Y < YSel Then
         Rectangle(XSel, e.Y, e.X - XSel, YSel - e.Y)
      Else
         Rectangle(XSel, YSel, XSel - e.X, YSel - e.Y)
   End If
End Sub

Mais le problème c'est qu'il faut effacer l'ancien rectangle. Alors si ton image est vierge ça va, sinon c'est un petit peu plus
compliqué. Au moins avec VB6 le contrôle Shape rendait cette manoeuvre facile, puisque l'on aviat juste à changer les coordonées du Shape.

Pour effacer l'ancien rectangle, il faut mémoriser ses coordonnées avant. Mais s'il y a une image derrière, je ne sais pas encore faire (d'ailleurs ça me pose problème pour refaire un logiciel mixant les fonctions de Paint et de PaintShop)
Messages postés
254
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 avril 2010

Salut, et merci de m'avoir répondu

je ne comprend pas comment tu déclares ton 'rectangle'

Swan94
Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

Un rectangle se crée avec les procédures graphiques


Voici un exemple de fonction


Function Rectangle(ByVal X As Integer, ByVal Y As Integer, ByVal Width As Integer, ByVal Height As Integer)
   Dim g As System.Drawing.Graphics = PictureBox1.CreateGraphics 'si tu travailles sur un PictureBox, sinon adapte
   g.DrawRectangle X, Y, Width, Height
End Function

Ce code est pour VB 2005, mais ça doit y ressembler en VB.NET (je crois, car les seuls VB sur lesquels je travaille sont VB6 et VB2005)