alainh2401
Messages postés7Date d'inscriptionmardi 2 mars 2004StatutMembreDernière intervention 2 juillet 2008
-
30 nov. 2007 à 17:01
Utilisateur anonyme -
30 nov. 2007 à 21:19
Bonjour,
J'aimerais savoir comment on peut contourner la methode clear, car celle-ci efface les objets précédement dessiné
J'ai bien essayé avec deux bitmaps, le premier est l'image "résultat", la seconde sert uniquement pendant le dépassement de la souris, mais l'image clignote.
J'ai retrouvé ce code que j'avais fait dans mes archives :
Cela reprend ce que tu as dans le lien donné par Jmf (que je salut au passage) mais sous forme de classe pour mettre plus simplement sur les contrôles standards :
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Public Class AutoRedraw
Implements IDisposable
Private DisposedValue As Boolean = False
Private _Graphic As Graphics
Private _Image As Image
Private _Control As Control
Public Sub New(ByVal Control As Control)
MyClass._Control = Control
MyClass._Image = New Bitmap(MyClass._Control.ClientSize.Width, _
MyClass._Control.ClientSize.Height)
MyClass._Graphic = Graphics.FromImage(MyClass._Image)
AddHandler _Control.Paint, AddressOf ControlPaint
End Sub
Public ReadOnly Property Graphic() As System.Drawing.Graphics
Get
Return MyClass._Graphic
End Get
End Property
Public ReadOnly Property Image() As System.Drawing.Image
Get
Return MyClass._Image
End Get
End Property
Private Sub ControlPaint(ByVal Sender As Object, ByVal e As PaintEventArgs)
MyClass.Paint(e.Graphics)
End Sub
Private Sub Paint(ByVal Graphic As Graphics)
Graphic.DrawImage(MyClass._Image, 0, 0)
End Sub
Public Sub ReDraw()
MyClass.Paint(MyClass._Control.CreateGraphics())
End Sub
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not MyClass.DisposedValue Then
RemoveHandler _Control.Paint, AddressOf ControlPaint
MyClass._Graphic.Dispose()
MyClass._Image.Dispose()
End If
MyClass.DisposedValue = True
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
MyClass.Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
MyClass.Dispose()
MyBase.Finalize()
End Sub