如何用VB实现双缓冲处理图片的闪烁问题?

xuelang24531 2009-05-07 04:17:55
有没大虾知道如何在VB中实现双缓冲处理啊,例如在PICTURE画图时防止闪烁问题。。。在线等
...全文
638 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuelang24531 2009-05-13
  • 打赏
  • 举报
回复
多谢各位了
ZOUYONG0929 2009-05-11
  • 打赏
  • 举报
回复
楼上正解!
starwork 2009-05-10
  • 打赏
  • 举报
回复
楼上正解!,但楼主是不理解!
Cauly123 2009-05-10
  • 打赏
  • 举报
回复
用几个api函数解决
具体方法


public function CreateBitmap(pic as picturebox) as long
dim mDc as long, mBitmap as long
mdc=CreateCompatibleDc(pic.hdc)
mBitmap=CreateCampatibleBitmap(pic.hdc,pic.scaleWidth,pic.scaleHeight)'假设pic.scalemode为pixel
selectObject mdc,mbitmap

CreateBitmap=mdc
end function

'此时mdc就是内存画布的dc,可以对他进行绘图操作
'需要时bitblt到图片的hdc上就ok了


Tiger_Zhao 2009-05-08
  • 打赏
  • 举报
回复
Option Explicit

Private Sub DrawPicture()
Dim x As Long, y As Long

Randomize
Picture1.Cls
For x = 0 To Picture1.ScaleWidth - 1
For y = 0 To Picture1.ScaleHeight - 1
If Rnd() < 0.5 Then
Picture1.PSet (x, y)
End If
Next
Next
End Sub

'无缓冲的方式,图像逐渐显示'
Private Sub Command1_Click()
Picture1.AutoRedraw = False
DrawPicture
End Sub

'无缓冲的方式,图像一次显示'
Private Sub Command2_Click()
Picture1.AutoRedraw = True
DrawPicture
Picture1.Refresh
End Sub

Private Sub Form_Load()
Picture1.BackColor = vbWhite
Picture1.ForeColor = vbBlack
Picture1.ScaleMode = vbPixels
End Sub
xuelang24531 2009-05-07
  • 打赏
  • 举报
回复
那如何新建一缓冲区,然后在里面绘图,最后再复制到picture上了,这样就不会出现按顺序出现图像的情况了。现在我把图片进行一个一个像素点绘出来后图片出现从上到下出现的情况,我想用双缓冲在缓存中画好再贴出来,请问改怎样做了?
Tiger_Zhao 2009-05-07
  • 打赏
  • 举报
回复
设置 AutoRedraw 就会自动实现双缓冲。
不同通常的闪烁问题是由于太频繁地进行刷新引起的。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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