簡體   English   中英

調整大小時 BitmapCache 性能不佳

[英]BitmapCache poor performance while resizing

我有一個ListView其中包含不同的復雜ListViewItem容器,包括圖像、陰影效果、模糊效果等。大量渲染這些容器會嚴重降低性能,尤其是因為我在ListView頂部使用了模糊覆蓋框架。 這就是為什么在這種情況下我將CacheMode設置為BitmapCache (將性能提高高達 15 倍的 fps)。

<Border.CacheMode>
    <BitmapCache />
</Border.CacheMode>

問題是我使用WrapPanelValueConverter來動態調整這些容器的大小並將其放入WrapPanel以便它們完全填充水平或平鋪視圖中的空間。 顯然,這不適用於緩存,並且會產生嚴重的滯后/停頓(幀下降到 0)。

目前我的 3 個選項是:

  • 禁用緩存(並以近 15fps 的速度運行)
  • 禁用調整大小(看起來不可接受)
  • 僅在調整窗口大小時禁用緩存和調整大小(仍然表現不佳,但這是我擁有的最佳選擇)

我的問題:

  • 為什么在使用緩存和不使用緩存調整大小時,性能會大幅下降?
  • 我是濫用緩存還是做錯了?
  • 有沒有更好的方法來解決這個爛攤子而不妥協?

好的。 經過大量的閱讀和實驗,我想到了兩件事:

  • 首先, Caching不應該用於經常調整大小的元素,特別是如果它們太多(找不到原因)。 所以,我基本上緩存了固定大小的子元素。

  • 這讓我想起了Virtualization ,這正是我所缺少的,但不知道WPF Lists支持。

通過更多優化,現在我可以平滑地調整窗口的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM