BitmapCache? Wann und wie zu verwenden?

8

Ich habe eine Frage zum Bitmap-Caching in Windows Phone 7 Silverlight-Anwendungen.

Wann soll ich es benutzen? Und auf was kontrolliert? Soll ich Zwischenspeicher für Kinder eines Controllers zwischenspeichern, dessen Bitmap im Cache gespeichert ist? Ich bin mir nicht sicher, wie es funktioniert und es wäre schön, einen Rat von euch zu bekommen.

/ Richard

    
Richard 17.01.2011, 18:25
quelle

3 Antworten

6

Ich habe diesen Link gefunden, in dem CacheMode in erklärt wird Silverlight 3. Über den Link: [Dieser Link ist tot.]

  • BitmapCache ist der einzige Cache-Modus, der unterstützt wird.
  • Das Caching wird auf das Element und alle untergeordneten Elemente angewendet.
  • BitmapCaching sollte in Szenarien verwendet werden, in denen Sie mischen, transformieren (übersetzen, strecken, rotieren).
  • Der Missbrauch der CacheMode-Funktion kann die Leistung beeinträchtigen. Sie müssen also wirklich darüber nachdenken, was Sie tun. Wenn in Ihrer visuellen Struktur zwischengespeicherte und nicht zwischengespeicherte Elemente verschachtelt sind, verursachen Sie effektiv, dass mehrere Renderoberflächen hinter den Kulissen erzeugt werden. Die nicht zwischengespeicherten Oberflächen werden in Software gerendert, und die zwischengespeicherten Oberflächen werden in Hardware gerendert. Ihre Leistung ist am besten, wenn Sie die Gesamtzahl der Rendering-Oberflächen minimieren und die Hardware dahin bringen können, wo sie kann.
  • Sie können bestimmen, welche Elemente zwischengespeichert werden, indem Sie den Parameter EnableCacheVisualization zur Silverlight-Plug-in-Deklaration hinzufügen. %Code%
  • Soweit ich das beurteilen kann, tritt auf Macs keine GPU-Beschleunigung auf, wenn die Silverlight-Anwendung nicht im Vollbildmodus ist. Dies ist offenbar eine Einschränkung des Safari Plug-In-Modells.

Ich frage mich, ob das <param name="EnableCacheVisualization" value="true" /> für WP7 aktiviert werden kann, ich verwende EnableCacheVisualization für ein BitmapCache und ein LongListPicker (das ich mit dynamisch erstelltem Inhalt bevölkere) und es wäre interessant zu wissen wenn das Caching funktioniert. Aber nach dem dritten Punkt sollten Sie es nur verwenden, wenn Sie ContentPresenter s animieren, was ich nicht bin, also sollte ich es vielleicht gar nicht benutzen!

    
Praetorian 17.01.2011, 21:29
quelle
4

BitmapCache sollte für die große Mehrheit der Objekte etwas sein, über das Sie in Windows Phone 7 nicht nachdenken müssen. Silverlight for WP7 implementiert das automatische Bitmap-Caching von Elementen, die auf eine Weise animiert werden, die das Caching unterstützt (translate, opacity, drehen - vielleicht mehr, ich kann mich jetzt nicht erinnern).

Silverlight auf einem Desktop-PC (oder Mac) ist derzeit nicht ganz so intelligent, daher müssen Sie CacheMode = BitmapCache für Objekte manuell angeben, indem Sie grob die Anweisungen verwenden, auf die Praetorian in seiner Antwort hingewiesen hat.

Es gibt wahrscheinlich Randfälle, in denen BitmapCache explizit auch unter Windows Phone sinnvoll ist, aber ich weiß nichts darüber. Sie können versuchen, die Tipps zur Windows Phone-Leistung auf MSDN zu lesen .

    
Austin Lamb 18.01.2011 01:23
quelle
1

Nach dem, was ich gesehen / gelesen habe, möchten Sie Bitmap-Caching für Objekte verwenden, deren Rendern (wie viele untergeordnete Elemente oder komplizierte Layouts) teuer sein kann, wenn Sie sie in Übergängen oder Animationen verwenden.

Mit Bitmap-Caching kann die Hardware die Übergänge + Animationen schneller / glatter machen.

Ich denke Sie müssen es nur auf das oberste Element / Elternelement setzen, auf das Sie die Transformation oder Animation anwenden? Jemand wird mich bald korrigieren, ich bin mir sicher:)

    
John Gardner 17.01.2011 19:18
quelle

Tags und Links