4

默认的 winAPI 应用程序没有双缓冲。相反,它在确保只绘制需要绘制的内容方面做得非常非常好,这给了它一个无缝的外观。但是,当您调整窗口大小时,需要重新绘制整个内容,这会导致控件、选项卡上的背景以及有时选项卡的白色之间闪烁。

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

4

2 回答 2

7

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

您可以在现有代码中进行非常直接的就地替换。不要使用渲染到窗口中的设备上下文,而是使用渲染到位图中的设备上下文,并且只使用原始 DC 将位图回位。

确保保留位图 - 不要在每次绘制调用中创建它。您只需要在调整窗口大小时重新创建它。

于 2010-10-09T01:50:26.190 回答
3

请查看以下文章:使用屏幕外 DC 的无闪烁显示器

本文介绍了一种以屏幕不闪烁的方式绘制到窗口设备上下文 (DC) 的技术。该技术非常简单且易于实施。

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

于 2010-10-09T15:44:04.807 回答