
vb关于bitblt的问题,请教高手
使用bitblt把内存中的图片复制到一个正在运行的第三方程序窗口。发现这个程序不停的重绘(刷新)窗体。用了一个时间控件重复贴图,但是由于刷新速度很快,导致图片闪烁,请问如...
使用bitblt把内存中的图片复制到一个正在运行的第三方程序窗口。发现这个程序不停的重绘(刷新)窗体。用了一个时间控件重复贴图,但是由于刷新速度很快,导致图片闪烁,请问如何解决这种问题?不用bitblt也行。请给一个可行的解决方案。
首先谢谢 bater2000的回答,我遇到的闪烁不是你说的原因,而且我本身就是从内存bitblt到第三方程序窗口的,只是因为第三方程序窗体刷新太快,刚一贴图,立刻就没了,我是解决不了这个问题。 展开
首先谢谢 bater2000的回答,我遇到的闪烁不是你说的原因,而且我本身就是从内存bitblt到第三方程序窗口的,只是因为第三方程序窗体刷新太快,刚一贴图,立刻就没了,我是解决不了这个问题。 展开
3个回答
展开全部
如果可以修改第三方程序代码就可以简单解决了,只要把被绘制窗口的属性.AutoRedraw = True就可以了。
闪烁的原因是重绘造成的,解决重绘闪烁最根本的方法是用bitblt在内存里开辟一块与绘制区域一样尺寸的图,然后在内存里把绘制步骤依此完成后一次性的把内存图像bitblt到可见的窗口上即可消除闪烁。过去Bitblt写的二维游戏都是用这种方法。
闪烁的原因是重绘造成的,解决重绘闪烁最根本的方法是用bitblt在内存里开辟一块与绘制区域一样尺寸的图,然后在内存里把绘制步骤依此完成后一次性的把内存图像bitblt到可见的窗口上即可消除闪烁。过去Bitblt写的二维游戏都是用这种方法。
展开全部
建议采用间接方法处理:
在你的程序内加入Picture控件(Autoredraw=True),然后用setparent把此控件置入第三方窗口中。这样,你使用bitblt把内存中的图片先画到此控件中即可以了,而不会发生你所说的情况。
在你的程序内加入Picture控件(Autoredraw=True),然后用setparent把此控件置入第三方窗口中。这样,你使用bitblt把内存中的图片先画到此控件中即可以了,而不会发生你所说的情况。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试拦截那个程序的WM_PAINT消息然后再对其BitBlt。不过VB要拦截消息不好办就是了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询