默認的winAPI應用程序沒有雙緩衝。相反,它確保只繪製需要繪製的東西,並且使其具有無縫外觀方面做得非常非常好。但是,當您調整窗口大小時,整個事情都需要重新繪製,這會導致控件之間閃爍,選項卡上的背景以及選項卡的白色。WinAPI雙緩衝
所以我的問題是,在我的應用程序中支持雙緩衝的最簡單方法是什麼?
默認的winAPI應用程序沒有雙緩衝。相反,它確保只繪製需要繪製的東西,並且使其具有無縫外觀方面做得非常非常好。但是,當您調整窗口大小時,整個事情都需要重新繪製,這會導致控件之間閃爍,選項卡上的背景以及選項卡的白色。WinAPI雙緩衝
所以我的問題是,在我的應用程序中支持雙緩衝的最簡單方法是什麼?
創建一個窗口大小的位圖,渲染到該位圖中,然後在完成時將其返回窗口。
你可以在你現有的代碼中做一個非常簡單的就地替換。不是使用渲染到窗口中的設備上下文,而是使用渲染到位圖中的設備上下文,並僅使用原始DC將位圖傳回。
一定要保留位圖 - 不要在每次調用paint時創建它。您只需在窗口重新調整大小時重新創建它。
看看下面的文章:Flicker-Free Displays Using an Off-Screen DC。
本文介紹了用於 了一種技術,使得在屏幕 不閃爍繪製到窗口的設備上下文 (DC)。該技術是非常簡單和易於實現的 。
幾年前,我學習瞭如何防止本教程閃爍。