Archive

Posts Tagged ‘DecodePixelWidth’

[WPF] Améliorer le chargement d’une collection d’images

Dans certaines applications où on est amené à afficher une collection d’images on peut avoir très vite des problèmes de performance dû au fait que les images ne sont pas dans un format compressé ou sont de grandes tailles et mettent du temps à se charger.

Comment améliorer cela ? La réponse est simple : créer des miniatures pour les images.

Mais il ne s’agit juste pas de redimensionner les contrôles Image autant que possible pour contenir les images voulues. En effet cela n’empêche en rien le chargement total de l’image en mémoire avant que le contrôle Image ne la redimensionne pour respecter la taille demandée.

La meilleure solution est d’utiliser les propriétés DecodePixelWidth et DecodePixelHeight de la classe BitmapImage comme suit :

<image width="100">
  <Image.Source>
    <!-- Utiliser DecodePixelWidth ou DecodePixelHeight. 
         N'utiliser les deux propriétés en même temps que 
         si vous ne voulez pas garder le ration de l'image  -->
    <BitmapImage DecodePixelWidth="100"  
                 UriSource="chemin vers le fichier image" />
  </Image.Source>
</Image>

Avec ces propriétés l’image est décodée en mémoire pour contenir exactement la taille demandée. Dans notre cas la largeur demandée est de 100 pixels et la hauteur est déduite en fonction de la ratio de la taille réelle de l’image. Cette méthode améliore la façon de charger une image et fournit une rapidité qui ne sera pas négligeable si nous avons affaire à une collection d’images 😉 .

Catégories :WPF Étiquettes : , ,
%d blogueurs aiment cette page :