swan94
Messages postés254Date d'inscriptionjeudi 29 juillet 2004StatutMembreDernière intervention 2 avril 2010
-
19 sept. 2006 à 18:54
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 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é.
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 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)
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 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)