MFC–滾動視圖視窗(CScrollView)使用雙緩衝問題

來源:互聯網
上載者:User

雙緩衝繪圖能夠有效解決視窗重新整理時閃動問題,實現方法在網上 能夠很 容易找到.但是在繼承CScrollView類的滾動視窗中單純使用找到的方法就會發現一些問題,在我們拖動捲軸時,視窗顯示的很亂,並沒有重繪.


問題肯定是出在記憶體繪圖上了.先介紹兩個概念.

視窗:就是我們通過拖捲軸所能看到的整個視窗.它是有一部分不能被當前顯示的.

視口:就是我們能直接看到的當前顯示的視窗,它是視窗的一部分,肯定比視窗小一些.


雙 緩衝繪圖時,繪圖用的到的座標是是視窗的座標,拷貝位元影像到目的DC時,也是從(0,0)開始拷貝的,把以我們建立位元影像大小就不能設為通過 GetClientRect()獲得的視口大小,而要設為調用 SetScrollSizes(MM_TEXT,CSize(1280,800))時所設的視窗大小,.這樣繪圖就不會有問題.

這樣繪的圖比較大,為了加快繪圖速度,我們可以調用CDC::GetClipBox()獲得重新整理地區,判斷我們要繪的圖在不在重新整理地區,如果不在就可以不畫,畫了也不會顯示.


當然也可以將相容位元影像設為視口大小,但是在畫圖時要判斷出視口內要畫哪部分圖形,還要計算出繪圖的位移量,使用起來也不太方便.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.