2010-10-09 126 views
3

默认的winAPI应用程序没有双缓冲。相反,它确保只绘制需要绘制的东西,并且使其具有无缝外观方面做得非常非常好。但是,当您调整窗口大小时,整个事情都需要重新绘制,这会导致控件之间闪烁,选项卡上的背景以及选项卡的白色。WinAPI双缓冲

所以我的问题是,在我的应用程序中支持双缓冲的最简单方法是什么?

回答

6

创建一个窗口大小的位图,渲染到该位图中,然后在完成时将其返回窗口。

你可以在你现有的代码中做一个非常简单的就地替换。不是使用渲染到窗口中的设备上下文,而是使用渲染到位图中的设备上下文,并仅使用原始DC将位图传回。

一定要保留位图 - 不要在每次调用paint时创建它。您只需在窗口重新调整大小时重新创建它。

1

看看下面的文章:Flicker-Free Displays Using an Off-Screen DC

本文介绍了用于 了一种技术,使得在屏幕 不闪烁绘制到窗口的设备上下文 (DC)。该技术是非常简单和易于实现的 。

几年前,我学习了如何防止本教程闪烁。