Rectangle de selection [Résolu]

cs_plano 19 Messages postés jeudi 15 mai 2008Date d'inscription 6 février 2012 Dernière intervention - 20 sept. 2008 à 19:57 - Dernière réponse : benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention
- 21 déc. 2008 à 18:36
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 21 sept. 2008 à 12:17
3
Merci
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.

Merci ciberrique 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de ciberrique
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 21 sept. 2008 à 00:30
0
Merci
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.
Commenter la réponse de ciberrique
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 sept. 2008 à 08:18
0
Merci
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 !!!
Commenter la réponse de jmfmarques
cs_plano 19 Messages postés jeudi 15 mai 2008Date d'inscription 6 février 2012 Dernière intervention - 21 sept. 2008 à 10:34
0
Merci
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!!!)
Commenter la réponse de cs_plano
ciberrique 591 Messages postés lundi 25 août 2003Date d'inscription 18 juillet 2010 Dernière intervention - 21 sept. 2008 à 11:48
0
Merci
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.
Commenter la réponse de ciberrique
cs_plano 19 Messages postés jeudi 15 mai 2008Date d'inscription 6 février 2012 Dernière intervention - 21 sept. 2008 à 12:06
0
Merci
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!!!

 
Commenter la réponse de cs_plano
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 21 sept. 2008 à 14:54
0
Merci
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)
Commenter la réponse de jmfmarques
benji2000 78 Messages postés samedi 26 août 2006Date d'inscription 25 novembre 2016 Dernière intervention - 21 déc. 2008 à 18:36
0
Merci
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 
Commenter la réponse de benji2000

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.