Invalidate()函數的bErase參數的作用

來源:互聯網
上載者:User

調用Invalidate()函數會觸發OnPaint()事件,如果bErase參數為FALSE,那麼OnPaint不擦除背景,也就是說,
上一次和以前的OnPaint調用繪製的映像都不會清空,所以繪製的圖形是疊加的。除非每次OnPaint繪製的都是

同樣的圖形,否則就會看到圖形疊加的效果。
如果bErase參數為TRUE,那麼背景將被擦除,圖形不疊加,僅僅本次OnPaint繪製的圖形會顯示出來。當然由於

背景被擦除的一瞬間,會是白色,所以圖形會變得閃爍。

當然,以上討論都是針對不用雙緩衝的情況。對於用雙緩衝的情況,每次OnPaint都是先在記憶體DC中繪製,往往

先做的就是清空記憶體DC的映像,(如果每次都是在OnPaint中建立記憶體DC,那麼剛建立的記憶體DC肯定是無映像的

。),所以無論Invalidate()的bErase參數是TRUE還是FALSE , 都不會導致圖形疊加,bErase參數本來的作用

已經失去意義,倒是一般常用FALSE,一來省去了重繪背景花費的時間,二來避免了繪圖區的閃爍現象。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.