1. 程式人生 > >C# GDI繪圖中的雙緩沖技術

C# GDI繪圖中的雙緩沖技術

orm set 繪制圖像 設置 雙緩沖技術 double 如何解決 文章 屬性

最近的Winform項目中涉及到用GDI繪制波形圖的問題,那麽就遇到了最常見的圖像窗口閃爍問題。之前去面試的過程中也被問到過如何解決繪圖過程中的圖像閃爍問題。

   今天就結合實際的項目和拜讀的一些關於雙緩沖技術的文章淺談一下自己對雙緩沖技術的理解。主要參考文章來源於https://blog.csdn.net/keep_silence_/article/details/7849880。

   一、出現閃爍的原因

  繪圖過程中出發WM_PAINT消息時窗體需要進行重繪操作,充會操作過程先是擦除窗體的背景色,接著向窗體繪制圖像。一旦這兩個動作不同時發生,就會出現先擦除背景色,在繪制圖像的現象,看起來就像是圖像一直在閃爍。

  二、解決方法:

  采用雙緩沖技術來繪圖。

  三、雙緩沖技術的原理:

  先把圖像繪制在緩沖區,再將緩沖區的結果輸出到窗體上。就是說,刷新一次窗口時,所有元素同時顯示到窗口上。

  四、C#中操作雙緩沖的方法。

  1、利用默認的雙緩沖

  (1)這種方法最為簡便,就是通過.Net Framework提供的窗體和控件的默認雙緩沖:設置窗體和控件屬性DoubleBuffered = true;

          技術分享圖片

(2)使用SetStyle方法未窗體和控件啟用默認雙緩沖。在構造函數中添加設置相關代碼即可。

技術分享圖片

項目中也應用的這種方法。

  2、手動管理雙緩沖

  手動管理雙緩沖就是單獨開辟內存實現雙緩沖,在其中繪制完成後再顯示到窗體中。

 

C# GDI繪圖中的雙緩沖技術