如何在双缓冲控件上使用GDI绘图
我想在一个自定义控件上画图,显示当前时间。代码如下
Public Class GDIPanel
Inherits Panel
Dim bmp As Image
Public Property image() As Image
Get
Return bmp
End Get
Set(ByVal value As Image)
bmp = value
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
If Not Me.image Is Nothing Then
e.Graphics.DrawImage(Me.image, 0, 0, Me.Width, Me.Height)
End If
OnDraw()
End Sub
Public Sub OnDraw()
Dim g As Graphics
g = Me.CreateGraphics
Dim t As String
t = CStr(Now.Hour) + ":" + CStr(Now.Minute) + ":" + CStr(Now.Second)
Dim font As Font = New Font("Microsoft Sans Serif", 40, FontStyle.Regular)
g.DrawString(t, font, Brushes.Lime, 0, 0)
End Sub
Public Sub New()
' DoubleBuffered = True
End Sub
End Class
可是,每次把双缓冲开启,DoubleBuffered= True 时,便无法显示时间。是不是那个缓存的图层遮盖掉了当前图层啊?这个问题该如何解决啊?