2012-12-19 116 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。

相关问题