Form1_Paint

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Salut tout le monde
Sur ma form j'ai plaçé un control panel
aussi j'ai écrit une sub qui trace une ligne à l'intérieur du panel.
Private Sub draws()
  Dim gr As System.Drawing.Graphics
  Dim mypen As Pen
   gr = Me.Panel1.CreateGraphics
   mypen = New Pen(Color.Chocolate, 3)
   gr.DrawLine(mypen, 20, 20, 700, 700)
   mypen.Dispose()
   gr.Dispose()
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        draws()
    End Sub



1 pourquoi quand j'éxecute le programme je ne vois la ligne tracée très brievemment.Si je restore form ou minimize et réagrandis la ligne
apparait.
2 Si à la place de gr = Me.Panel1.CreateGraphics
j'écrit gr = Me.CreateGraphics
la ligne apparait immédiatement bien sur à une place différente
3 Si je place un picturebox à la place du panel
je ne vois jammais la ligne

Merci beaucoup

5 réponses

Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Essaye le double buffering :
http://www.bobpowell.net/doublebuffer.htm

Mon site
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
le double buffering ne répond pas à ma question
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Bonjour,

Le panel ne se redessine pas forcément en même temps que ta form.
Le mieux est de faire une classe dérivée de Panel et de faire un Override sur l'évènement OnPaint.

Bonne Prog
Messages postés
403
Date d'inscription
mercredi 19 avril 2006
Statut
Membre
Dernière intervention
7 août 2020
1
Ou bien essai de te mettre dans l'evènement Paint du Panel :

Private Sub draws(gr as System.Drawing.Graphics)
  Dim mypen As Pen
   mypen = New Pen(Color.Chocolate, 3)
   gr.DrawLine(mypen, 20, 20, 700, 700)
End Sub
Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        draws(e.Graphics)
    End Sub



Pas besoin de mettre de dispose, le Garbage Collector est là pour ca, surtout que de supprimer un graphic où l'on vient de dessiner dessus...

Bonne Prog
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut
Merci ça marche avec Panel1_Paint event