2

私はすでにこのスレッドを読んでいますが、何が機能するのかわかりBitmapCacheません。

msdnによると、

ビットマップ キャッシュを使用すると、最初のレンダー パスの後にビジュアル要素をビットマップとして保存できます。要素がキャッシュされた後、アプリケーションはキャッシュされたビジュアル要素のレンダリング フェーズをバイパスし、代わりに格納されたビットマップを表示します。

に設定CacheMode="BitmapCache"しましたListBox。最初のレンダリングの後、OS はビジュアルをビットマップとして保存し、再度レンダリングせずに各フレームにそのビットマップを表示し続けると思います。ListBox今は静的であるべきだと思います。しかし、私はまだスクロールできますListbox

私はそれを間違って理解しなければなりません。BitmapCacheとは何か説明してください。

BitmapCacheよろしければ、要素ごとに設定してみませんか?

4

1 に答える 1

2

ListBox は静的であるべきだと思います。しかし、リストボックスをスクロールすることはできます。

リストボックスをスクロールすると、その内容が再描画され、キャッシュされた表現が更新されます。ビットマップ キャッシュは、変換などの一部の変換に役立ちます。そのような場合、キャッシュされた表現には多くの利点があります。

  1. コントロールはそのコンテンツを再描画する必要はありません => CPU 経済
  2. 視覚表現はコントロールに依存しなくなったため、GPU で直接処理できます。

よろしければ、すべての要素に BitmapCache を設定してみませんか?

BitmapCache はより多くのメモリを使用し、実際にパフォーマンスに悪影響を与える可能性があるまれなケースがあるようです (ただし、私はそれらを列挙するのに十分な知識がありません)。BitmapCache をオンにする必要があるかどうかを知る良い方法は、EnableRedrawRegions設定を true に設定することです。エミュレーターは再描画される領域を表示し、それに応じて BitmapCache を設定できます。

于 2012-12-19T12:06:49.977 に答える