如何在双缓冲控件上使用GDI绘图

r040bk20032030 2009-07-03 12:19:38
我想在一个自定义控件上画图,显示当前时间。代码如下
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 时,便无法显示时间。是不是那个缓存的图层遮盖掉了当前图层啊?这个问题该如何解决啊?
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
r040bk20032030 2009-07-03
  • 打赏
  • 举报
回复
这个怎么设啊?
能不能给我一个在双缓冲控件(如PictureBox)上画图的例子啊?
yilanwuyu123 2009-07-03
  • 打赏
  • 举报
回复
设置双缓冲好像还要设置UserPaint属性
r040bk20032030 2009-07-03
  • 打赏
  • 举报
回复
有或者是给我一个 在PictureBox控件上 画当前时间的代码
r040bk20032030 2009-07-03
  • 打赏
  • 举报
回复
经常在网上看见人家说,把DoubleBuffered设为True。然后在内存中画图。画完后导入到屏幕上。那究竟是怎么回事啊。
我是菜鸟,看不太懂。目前只会利用诸如 Dim g As Graphics g = Me.CreateGraphics 来绘图。
哪位大哥能给我解释一下吗?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧