【问题标题】:WinAPI Double-bufferingWinAPI 双缓冲
【发布时间】:2011-04-23 03:47:43
【问题描述】:

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

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

【问题讨论】:

    标签: c++ winapi double-buffering


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      本文描述了一种技术 绘制到窗口设备上下文 (DC) 以这样的方式使屏幕 不闪烁。该技术是 非常简单,易于实现。

      几年前我从这个教程中学会了如何防止闪烁。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 2019-03-16
        • 1970-01-01
        • 2013-08-14
        • 2011-03-05
        • 2011-08-20
        相关资源
        最近更新 更多