WinAPI双缓冲

时间:2010-10-09 01:22:25

标签: c++ winapi double-buffering

默认的winAPI应用程序没有双缓冲。相反,它确实能够确保只绘制需要绘制的内容,并使其具有无缝外观。但是,当您调整窗口大小时,需要重新绘制整个窗口,这会导致控件之间的闪烁,选项卡上的背景,以及选项卡的白色。

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

2 个答案:

答案 0 :(得分:6)

创建一个与窗口大小相同的位图,渲染到该位图,并在完成后将其重新插入窗口。

您可以在现有代码中进行非常简单的就地替换。不使用渲染到窗口中的设备上下文,而是使用渲染到位图中的设备上下文,并且仅使用原始DC来回显示位图。

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

答案 1 :(得分:3)

请查看以下文章:Flicker-Free Displays Using an Off-Screen DC

  

本文介绍了一种技术   绘制到窗口设备上下文   (DC)以这样的方式显示屏幕   没有闪烁。技术是   非常简单易行。

几年前我学会了如何防止本教程中的闪烁。