请教图片框的抖动问题

muddled 2003-12-27 04:46:17
我在图片框里打印了几个字母,然后用timer
使它移动,可是闪烁的很厉害,请高手指点:
Private Sub Form_Load()
picture1.print "abcd"
end sub

Private Sub Timer1_Timer()
Call LockWindowUpdate(Me.hWnd)
picture1.top=picture1.top+50
picture1.left=picture1.left+50
Call LockWindowUpdate(0)
End Sub

form1 和picture1的autoredraw都设为true.
请各位高手指教,谢谢!
...全文
47 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
muddled 2003-12-28
能说详细一点吗?用什么实现?谢谢!
回复
thirdapple 2003-12-28
可以,如果开了AutoReDraw的话
回复
kmzs 2003-12-28
image不抖
回复
muddled 2003-12-28
请教各位高手:bitblt能拷贝打印在图片框里的字符吗?
回复
pigpag 2003-12-28
同意,这种现实内容不需要大量的后台缓冲运算,不需要缓冲的
回复
thirdapple 2003-12-28
试试看,我以前用BitBlt做个Super Mario,卷轴的也没闪,双缓冲如果处理不当反而浪费时间和空间。
回复
liyan010 2003-12-28
To thirdapple(陨落雕):

反对你的观点.我觉得还是需要缓冲的,否则只用BitBlt绝对会闪
回复
thirdapple 2003-12-28
这个根本不用双缓冲,浪费
设置AutoReDraw为True,然后用BitBlt函数贴上去,没问题
回复
fu0212 2003-12-27
在内存中 做缓冲 然后在拷贝出来打印在图片框中 会更快的
回复
rainstormmaster 2003-12-27
他是指双缓冲

实际上,双缓冲技术是计算机动画的一项传统技术。造成屏幕闪烁的主要原因在于,画面在显示的同时,程序又在改变它,于是画面闪烁。解决办法就是在内存中开辟一片区域作为后台画面,程序对它更新,修改,完成后再显示它。这样被显示的图像永远是已经完全画好的图像,程序修改的将不是正在被显示的图像。当然还有其它方法可以解决屏幕闪烁问题,但使用双缓冲技术是一种值得推荐的解决方案
回复
muddled 2003-12-27
再加一个图片框,两个轮流出现?
回复
jjwwsb 2003-12-27
再加一个图片框,两个轮流出现
回复
海牛 2003-12-27
呵呵,你是想做字幕吧!!俺有控件啊!!!
http://expert.csdn.net/Expert/topic/2416/2416623.xml?temp=.457699
要得话:EMail:Rick110A@Yahoo.com.cn
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告