2011-01-17 8 views
8

Tengo una pregunta sobre el almacenamiento en caché de mapa de bits en Windows Phone 7 aplicaciones Silverlight.BitmapCache? ¿Cuándo y cómo usar?

¿Cuándo debo usarlo? ¿Y en qué controles? ¿Debo mapa de bits en caché los niños de un control que es el mapa de bits en caché? No estoy seguro de cómo funciona y sería bueno obtener un consejo de ustedes.

/Richard

Respuesta

6

encontré this link explicar CacheMode en Silverlight 3. En el enlace: [. Este enlace está muerto]

  • BitmapCache es el único modo caché que es compatible.
  • El almacenamiento en caché se aplica al elemento y a todos sus elementos secundarios.
  • BitmapCaching se debe utilizar en los escenarios en los que está mezclando, transformando (traduciendo, estirando, rotando).
  • El uso incorrecto de la función CacheMode puede perjudicar el rendimiento, por lo que debe pensar detenidamente lo que está haciendo. Si su árbol visual está entrelazando elementos almacenados en caché y no almacenados en caché, está causando que se creen varias superficies de renderizado entre bastidores. Las superficies no almacenadas en caché se procesan en software y las superficies en caché se procesan en hardware. Su rendimiento será mejor si puede minimizar el número total de superficies de renderizado y obtener el hardware para hacer el trabajo donde sea posible.
  • Puede determinar qué elementos se almacenan en caché agregando el parámetro EnableCacheVisualization a su declaración de complemento de Silverlight. <param name="EnableCacheVisualization" value="true" />
  • Por lo que puedo decir, la aceleración de GPU no ocurre en Mac cuando la aplicación Silverlight no está en modo de pantalla completa. Esto es aparentemente una limitación del modelo del complemento Safari.

Me pregunto si el EnableCacheVisualization se pueden habilitar para WP7, estoy usando BitmapCache para un LongListPicker y una ContentPresenter (que pueblan con el contenido creado de forma dinámica) y sería interesante saber si el almacenamiento en caché está trabajando . Pero de acuerdo con la tercera viñeta, debería usarla solo si está animando UIElement s, que yo no soy, ¡así que tal vez no debería usarlo en absoluto!

1

Por lo que he visto/leído, que desea utilizar el almacenamiento en caché de mapa de bits en objetos que podrían ser costosos para hacer (como un montón de niños o diseño complicado) si se va a utilizar en transiciones o animaciones.

Con el almacenamiento en caché de mapa de bits, el hardware puede hacer las transiciones + animaciones más rápido/más suave.

I piensa solo tiene que ponerlo en la parte superior del artículo/elemento principal donde se aplica la transformación o la animación? Alguien se ajustarán a poco de corregirme, estoy seguro :)

4

BitmapCache debería ser, para la gran mayoría de los objetos, algo que no necesita pensar en Windows Phone 7. Silverlight para WP7 implementa el almacenamiento automático de mapas de bits de elementos que se animan de forma que el almacenamiento en caché ayuda (traducir, opacidad , rotar - tal vez más, no puedo recordar ahora).

Silverlight en una PC de escritorio (o Mac) no es tan inteligente actualmente, por lo que necesita especificar CacheMode = BitmapCache en objetos utilizando aproximadamente la orientación apuntada por Praetorian en su respuesta.

Probablemente existan casos extremos en los que la configuración de BitmapCache sea explícitamente útil incluso en Windows Phone, pero no los conozco de manera directa. Puedes intentar mirar el Windows Phone Performance Tips on MSDN.

Cuestiones relacionadas