none
Picturebox équivalent à AutoRedraw RRS feed

  • Question

  • Bonjour,

    j'ai un problème de dessin qui disparaît tout seul lorsque j'appuie sur la touche Alt GR. Le dessin est fait avec la souris.

        Private Sub PictureBoxDessin_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBoxDessin.MouseDown
            Down = True
        End Sub
    
        Private Sub PictureBoxDessin_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBoxDessin.MouseMove
            If Down = True Then
                Dim myBrush As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(Color.Black)
                PictureBoxDessin.CreateGraphics.FillEllipse(myBrush, e.X, e.Y, 5, 5)
            End If
        End Sub
    
        Private Sub PictureBoxDessin_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBoxDessin.MouseUp
            Down = False
        End Sub
    
    Down est bien sûr déclaré Boolean. Dans Vb6 il y avait une fonction AutoRedraw = True pour ne pas que le dessin disparaisse.

    Merci

    dimanche 2 septembre 2018 00:59

Réponses

  • Il faut assigner l'image de la PictureBox

    Par ex :

    Dim MyBitmap1 As Bitmap

    Au chargement de la Form :

    MyBitmap1 = New Bitmap(PictureBoxDessin.Width, PictureBox1.Height)

    Puis pour dessiner :

    Using MyGraphics As Graphics = Graphics.FromImage(MyBitmap1)
        Using MyBrush As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(Color.Black)
            MyGraphics.FillEllipse(MyBrush, e.X, e.Y, 5, 5)
            PictureBoxDessin.Image = MyBitmap1
        End Using
    End Using


    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 10:22
  • Salut !

    Super merci cela fonctionne. Toutefois il manquait :

    Dim MyGraphics As Graphics = Graphics.FromImage(MyBitmap1)

    pour que ça marche.

    Néanmoins, comment effacer le bitmap ? Avec Picturebox, on met l'image à Nothig et c'est bon. Comment fait-on avec un bitmap ? Merci


    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 12:41
  • Je me réponds...

                Using G As Graphics = Graphics.FromImage(MyBitmap1)
                    G.Clear(Color.White)
                End Using
    

    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 13:03

Toutes les réponses

  • Il faut assigner l'image de la PictureBox

    Par ex :

    Dim MyBitmap1 As Bitmap

    Au chargement de la Form :

    MyBitmap1 = New Bitmap(PictureBoxDessin.Width, PictureBox1.Height)

    Puis pour dessiner :

    Using MyGraphics As Graphics = Graphics.FromImage(MyBitmap1)
        Using MyBrush As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(Color.Black)
            MyGraphics.FillEllipse(MyBrush, e.X, e.Y, 5, 5)
            PictureBoxDessin.Image = MyBitmap1
        End Using
    End Using


    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 10:22
  • Salut !

    Super merci cela fonctionne. Toutefois il manquait :

    Dim MyGraphics As Graphics = Graphics.FromImage(MyBitmap1)

    pour que ça marche.

    Néanmoins, comment effacer le bitmap ? Avec Picturebox, on met l'image à Nothig et c'est bon. Comment fait-on avec un bitmap ? Merci


    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 12:41
  • Je me réponds...

                Using G As Graphics = Graphics.FromImage(MyBitmap1)
                    G.Clear(Color.White)
                End Using
    

    • Marqué comme réponse Mayumi56 dimanche 2 septembre 2018 13:03
    dimanche 2 septembre 2018 13:03
  • Le MyGraphics était dans le Using

    Pour réinitialiser, on peut faire :

    MyBitmap1.Dispose()
    MyBitmap1 = New Bitmap(PictureBoxDessin.Width, PictureBoxDessin.Height)
    PictureBoxDessin.Image = MyBitmap1
    PictureBoxDessin.Refresh()


    • Modifié Castorix31 dimanche 2 septembre 2018 13:05
    dimanche 2 septembre 2018 13:05