2

我已经读过这个线程,但我不知道是什么BitmapCache

根据msdn

位图缓存允许在第一次渲染后将视觉元素存储为位图。缓存元素后,应用程序会绕过缓存可视元素的渲染阶段,而是显示存储的位图。

CacheMode="BitmapCache"为我的ListBox. 我认为在第一次渲染之后,操作系统会将其视觉效果保存为位图,然后继续在每一帧中显示该位图,而无需再次渲染。我认为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 回答