Rectangle de selection

Résolu
Signaler
Messages postés
19
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
6 février 2012
-
Messages postés
78
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
25 novembre 2016
-
Bonjour à tous et à toutes!
Voila ma question!
Je voudrais créer un rectangle de sélection dans un picturebox!
Quelqu'un pourrait il m'aider?
Je vous en supplie  lol !!!
Merci d'avance.

8 réponses

Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
Je serais toi je stockerais les coordonnées de ton dessin et si le rectangle de selection englobe les coordonnées alors tu deplace ton images en modifiant les coordonnées de l'image. Je sais pas si je suis clair ^^.

<hr />www.e-fitz.com
Encore plus de source et de tutoriels.
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
Bonjour, voici une solution possible,

crée un nouveau projet et dedans met un picture box nommé Picture1, voici le code à insérer dans la form :

Option Explicit


Dim oldX As Integer, oldY As Integer
Dim SavePic As PictureBox


Private Sub Form_Load()
    Set SavePic = Picture1
    Picture1.AutoRedraw = True
    Picture1.BackColor = vbWhite
End Sub


Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        SavePic.Picture = Picture1.Picture
        oldX = X
        oldY = Y
    End If
End Sub


Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        Picture1.Picture = SavePic.Picture
        Picture1.Line (oldX, oldY)-(X, Y), vbBlue, B
    End If
End Sub


Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        Picture1.Picture = SavePic.Picture
    End If
End Sub

En esperant que cela te seras utile.





<hr />

www.e-fitz.com

Encore plus de source et de tutoriels.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Bonjour, ciberrique,

- ta réponse VB6 ne me parait pas réellement correspondre à la demande...
- mais, surtout : ton code est écrit pour VB6 et non pour VB.Net !!!
Messages postés
19
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
6 février 2012

Merci Ciberrique pour ton code, mais il est vrai que ce n'est pas du VB.NET!
Je vais quand meme essayer de le transposer malgre que je sois débutant.
(Si tu sais comment on fait!!!)
Messages postés
589
Date d'inscription
lundi 25 août 2003
Statut
Membre
Dernière intervention
18 juillet 2010
1
Ah oui j'ai pas fait attention effectivement c'est pas du .net, et le probleme est que je pourrais pas t'aider a transposer car je ne fais pas de .net par contre je vois pas ce qui ne correspond pas, de plus plutot de dire ca correspond pas donne une reponse mieu adapté.

<hr />www.e-fitz.com
Encore plus de source et de tutoriels.
Messages postés
19
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
6 février 2012

Alors voilà, j'ai trouvé comment faire un rectangle de sélection dont voici le code:
 'Les coordonnees utilisees pour dessiner notre rectangle
    Private Xstart, Ystart, Xend, Yend As Integer
    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
        'Si click gauche
        If e.Button = MouseButtons.Left Then
            'Initialisation des coordonnes
            Xstart = e.X
            Ystart = e.Y
            Xend = e.X
            Yend = e.Y
            'Declaration du rectangle
            Dim r As Rectangle
            'On dessine le rectangle en utilisant la fonction RectangleToScreen
            'qui convertie les coordonnes du rectangle par rapport a l'ecran
            r = PictureBox1.RectangleToScreen(New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart))
            'On dessine un rectangle inversee qui laissera visible l'interieur du rectangle
            ControlPaint.DrawReversibleFrame(r, Me.BackColor, FrameStyle.Dashed)
        End If
        'End If
    End Sub
    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        'Quand clique gauche
        If e.Button = MouseButtons.Left Then
            'On efface l'ancien rectangle
            Dim r As Rectangle
            r = PictureBox1.RectangleToScreen(New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart))
            ControlPaint.DrawReversibleFrame(r, Me.BackColor, FrameStyle.Dashed)
            'Nouvelles coordonnees de la souris quand on la bouge
            Xend = e.X
            Yend = e.Y
            'On redessine le rectangle avec les nouvelles coordonnes de la souris
            r = PictureBox1.RectangleToScreen(New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart))
            ControlPaint.DrawReversibleFrame(r, Me.BackColor, FrameStyle.Dashed)
        End If
    End Sub
    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
        If e.Button = MouseButtons.Left Then
            'On efface le dernier rectangle
            Dim r As Rectangle
            r = PictureBox1.RectangleToScreen(New Rectangle(Xstart, Ystart, Xend - Xstart, Yend - Ystart))
            ControlPaint.DrawReversibleFrame(r, Me.BackColor, FrameStyle.Dashed)
        End If
    End Sub

Maintenant j'ai un petit dessin:

Dim NewGraphic
As
Graphics = PictureBox1.CreateGraphics()

Dim blackPen
As

New
Pen(Color.Black, 1)NewGraphic.DrawRectangle(blackPen, 100, 100, 40, 20)

NewGraphic.DrawLine(blackPen, 130, 100, 110, 120)

Donc j'aimerai pouvoir sélectinner mon déssin avec ce fameux rectangle et le déplacer.

Comment je dois faire?

Merci à ceux qui me répondront!!!

 
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
Tu sais maintenant, ciberrique, quelle était la véritable question :
Sélectionner une portion de dessin.
Sous VB6, PaintPicture ferait l'affaire (entre autres) : quid sous VB.Net ? (je n'en sais personnellement rien)
Messages postés
78
Date d'inscription
samedi 26 août 2006
Statut
Membre
Dernière intervention
25 novembre 2016

Bon travail il y a du code, mais on aboutit à quelque chose qui est très agréable et facile d'utilisation.
Merci beaucoup pour vos participations à ce sujet qui m'a était très utile.
Bonne prog à vous tous...

 DOVAX