Form1_Paint

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 20 avril 2010 à 13:34
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 22 avril 2010 à 15:51
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

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
20 avril 2010 à 14:12
Bonjour,

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

Mon site
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
21 avril 2010 à 00:55
Salut
le double buffering ne répond pas à ma question
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
21 avril 2010 à 09:52
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
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
21 avril 2010 à 09:55
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
22 avril 2010 à 15:51
Salut
Merci ça marche avec Panel1_Paint event
0
Rejoignez-nous