レンダリングに計算コストの高いグラフィックスを使用するWindowsアプリケーションでは、通常スクロールがどのように処理されますか? I音の波形グラフを描画していた場合、例えば、peakfileから波形を処理した後、Iべき:Windowsアプリケーションのスクロールバッファリング
は、その後、メモリ内GDI面に全体のグラフィカル表現をレンダリングし、そしてスクロール可能なコントロールをレンダリングエリアの開始/終了を変更するだけですか?
波の可視部分のみをレンダリングします。別のスレッドでは、表示されるグラフの新しいチャンクを処理します。
波の可視部分とバッファーをレンダリングします。このようにして、波形の「空白」または「現在のレンダリング」部分がユーザに見える可能性は少なくなります。それでもユーザーがすばやく離れた場所にスクロールすると、レンダリングが完了するまでセクション全体が空白になります。
問題は、多くのアプリケーションがこれをさまざまな方法で処理することです。例えば
:
は、Adobe Acrobatは - ページがキャッシュ内にある場合を除き、スクロール中に空白のページをレンダリングします。ドキュメントのレンダリング領域内に表示されるページは、別のスレッドでレンダリングされ、oponの完了が示されます。
Microsoft Word - 基本的に上記と同じです。ドキュメントは別々のページに分かれているため、必要に応じて各ページが処理/レンダリングされ、キャッシュに追加されます。
Internet Explorer - 不明です。 「ウェブページ」全体がグラフィックメモリにレンダリングされているように見えますが、消費するグラフィックデータの数にかかわらずグラフィックメモリに表示されます。理論的には、10または15画面の長さのためにスクロールするWebページでは、これは50〜60MB相当のグラフィックメモリ消費を意味する可能性があります。 WebKitやFireFoxの経験がある人は、レンダリングエンジンが大量のメモリを消費するかどうかを説明したり、メモリを節約するためにページのペイシズを「オンザフライ」でレンダリングしようとしますか?
私のアプリケーションは、C#、.NET 3.5、およびWinFormsに基づいています。