如何在Windows應用程序中進行滾動處理,該應用程序的渲染計算耗費大量圖形?例如,如果我的渲染的聲音的波形圖,從一個peakfile處理所述波形之後,我應:Windows應用程序中的滾動緩衝
渲染整個圖形表示到內存中的GDI表面上,然後只需要一個可滾動的控件來改變渲染區域的開始/結束?
僅渲染波的可見部分。在一個單獨的線程中,處理進入視圖的graphc的所有新塊。
呈現波的可見部分,加上緩衝區。這樣,用戶看到波形的「空白」或「當前渲染」部分的機會就越小。但是,如果用戶快速滾動到較遠的區域,整個部分將保持空白,直到渲染完成。
問題是,許多應用程序以不同的方式處理它。
例如:
使用Adobe Acrobat - 滾動過程中呈現的空白頁面,除非頁面是在緩存中。任何在文檔渲染區域內可見的頁面都會在一個單獨的線程中呈現,並呈現opon完成。
Microsoft Word - 基本上與上面相同。文檔分爲不同的頁面,因此每個頁面都按需處理/渲染並添加到緩存中。
Internet Explorer - 未知。看起來整個「網頁」都是在圖形內存中呈現的,無論它消耗多少「屏幕」圖形數據。理論上,對於滾動10或15個屏幕長度的網頁,這可能意味着50-60MB的圖形內存消耗。任何具有WebKit或FireFox經驗的人都可以解釋渲染引擎是否傾向於消耗大量內存,或嘗試渲染頁面的「動態」以節省內存?
如果有幫助,我的應用程序基於C#,.NET 3.5和WinForms。