2012-12-19 75 views
2

我已經閱讀this thread,但我不知道BitmapCache做什麼。什麼是WP7中的BitmapCache?

根據msdn

位圖緩存允許視覺元素將被存儲爲 第一渲染過程後的位圖。緩存該元素之後,應用程序 會繞過緩存的可視元素的呈現階段,而不是顯示存儲的位圖的 。

我爲我的ListBox設置了CacheMode="BitmapCache"。我認爲在第一次渲染之後,操作系統會將其視覺保存爲位圖,然後繼續在每一幀中顯示該位圖,而不會再次渲染。我認爲ListBox現在應該是靜態的。但我仍然可以滾動Listbox

我必須理解錯誤。請解釋BitmapCache做什麼?

如果它是好的,爲什麼我們不爲每個元素設置BitmapCache

回答

2

我認爲ListBox應該是靜態的。但我仍然可以滾動列表框。

當您滾動列表框時,它會重新繪製其內容,從而更新緩存表示。位圖緩存對於一些轉換(如轉換)很有用。在這些情況下,緩存表示具有許多優點:

  1. 控制不必重繪其含量=> CPU經濟
  2. 由於該視覺表示是不依賴於控制的了,它可以是由GPU直接處理

如果它是好的,爲什麼我們不爲每個元素設置BitmapCache?

BitmapCache使用更多的內存,並且似乎存在實際上會對性能產生負面影響的角落案例(儘管我對該主題沒有足夠的知識來枚舉它們)。知道BitmapCache是​​否應該打開的一個好方法是將EnableRedrawRegions設置爲true。仿真器將顯示哪些區域正在重繪,並且您可以相應地設置BitmapCache。

相關問題