[VB.Net] Créer rectangle

swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010 - 19 sept. 2006 à 18:54
Schlangan Messages postés 47 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 11 décembre 2007 - 21 sept. 2006 à 09:10
    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

Schlangan Messages postés 47 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 11 décembre 2007
20 sept. 2006 à 17:06
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)
0
swan94 Messages postés 254 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 2 avril 2010
20 sept. 2006 à 23:01
Salut, et merci de m'avoir répondu

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

Swan94
0
Schlangan Messages postés 47 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 11 décembre 2007
21 sept. 2006 à 09:10
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)
0
Rejoignez-nous