2010-11-30 8 views
2

Je prévois d'utiliser une image d'arrière-plan pour chacune de mes pages dans WP7 et ne pas garder l'arrière-plan transparent.
Des suggestions ou des problèmes que je dois savoir? J'ai aussi remarqué une propriété CacheMode.
Puis-je utiliser cela pour améliorer les performances si chacune des pages a le même fond s'étendant sur toute la page?WP7 page background image

Répondre

5

Vous pouvez créer un contrôle d'image de la taille de l'écran et poser vos autres contrôles devant.

Si vous pensez que ce contrôle doit être redessiné, il est possible que la mise en cache des bitmaps vous épargne les frais supplémentaires de pixellisation répétée du contrôle.

+0

Mick, merci. Vous êtes toujours disponible pour aider. J'utilise un imagebrush sur la grille principale de la page pour afficher tout l'arrière-plan. Dois-je utiliser la propriété CacheMode pour définir la mise en cache de bitmap? Est-ce que l'arrière-plan sera mis en cache pour toutes les pages alors ou il sera toujours chargé pour chaque page. Peut-être que la dernière partie ne s'applique pas mais je viens du monde ASP.NET :) –

+0

@Pratik Je ne pense pas que des pages séparées partagent des ressources/arrière-plans si vous les définissez au niveau de la page - vous pourriez être en mesure de pointer la page les arrière-plans à un imagebrush défini au niveau de l'application si vous êtes très préoccupé par les performances, mais pour être honnête, sauf si vous utilisez des images énormes, je ne serais pas trop inquiet à ce sujet. Comme un sidenote, WP7 semble aimer mettre en cache tout ce que vous téléchargez (que vous découvrirez si vous avez un jeu avec System.Net.WebClient sur le téléphone) –

+0

Blakomen a raison de dire que chaque page aura son propre arrière-plan. Mise en cache bitmap Je ne m'inquiéterais que si vous faites des redraws.Gardez à l'esprit que le cache bitmap signifie que le contrôle (dans votre cas, une grille avec un imagebrush appliquée à l'arrière-plan) est dessiné, le rendu rastérisé (bitmap) de ce contrôle est conservé en mémoire. C'est tout .. il ne cache pas le système de fichiers où vous lisez l'image source. –

0

Il y a quelques problèmes de performance que vous devriez être au courant:

1) Assurez-vous de grandes images sont catégorisés comme Content et non Resources. Compiler comme Resource va construire l'image dans l'exécutable binaire lui-même, ce qui le rend beaucoup plus grand à charger dans la mémoire au démarrage.

Jeff Wilcox:

Si vous utilisez Panorama, un arrière-plan des ressources chargera immédiatement par rapport au contenu

2) Sauf si vous avez vraiment besoin de l'utilisation de la transparence des fichiers .jpg plutôt que .png. L'algorithme de décodage .jpg est nettement plus rapide que .png. Cependant méfiez-vous de la compression. Qu'est-ce qu'une petite image sur le disque consomme beaucoup plus de mémoire une fois qu'il a été décompressé en mémoire.

1

Vous pouvez le mettre sur le PhoneApplicationFrame au lieu de Puttin sur chaque page: il chargera alors qu'une seule fois pour toutes ...

7

2 étapes:
(1)
dans
<phone:PhoneApplicationPage mis en coquille: SystemTray.IsVisible = "Faux"


(2)

<Grid x:Name="LayoutRoot"> 
<Grid.Background> 
<ImageBrush ImageSource="Assets/Images/Flowers.png"></ImageBrush> 
</Grid.Background>