vu que tu travailles sur un graphics non lié (qui lui travailles sur l'image) oui ca va plus vite que de travailler sur un graphics lié à un controle
pour le contexte :
buffer = BufferedGraphicsManager.Current.Allocate()
donc pas besoin d'avoir à instancier un contexte
donc si j'ai bien compris (tu dois te dire que je suis lent à comprendre, mais en fait moi je fais du vb et j'ai toujours un peu de mal à lire du c#)
tu créé une image via un graphics, et tu mets cette image dans PB.image
pour un panel, tu pourrais aussi mettre dans panel.backgroundimage
de toute facon que t'utilises l'un ou l'autre, ca ne change rien niveau perf, tous les controles se ressemblent ...
tu pourrais meme créer un nouveau controle hérité de control
voici en vb l'utilisation classique d'un buffer (avec pb as picturebox)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Private buffer As BufferedGraphics
Private Sub PB_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PB.SizeChanged
buffer = BufferedGraphicsManager.Current.Allocate(PB.CreateGraphics, PB.ClientRectangle)
dessine_buffer()
End Sub
Private Sub dessine_buffer()
buffer.Graphics.Clear(PB.BackColor)
buffer.Graphics.DrawImage()
buffer.Graphics.DrawLine()
buffer.Render
End Sub
Private Sub PB_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PB.Paint
buffer.Render(e.Graphics)
End Sub |
si le controle sur lequel on utilise le buffer est transparent, ce n'est plus du meme acabit
Partager