2010-11-11 6 views

Répondre

19

En fait, cela fonctionne, mais il manque un peu de documentation.

Après quelques ennuis, voici comment l'utiliser:

  • référence ImageTools
  • ImageTools.Controls de référence
  • référence ImageTools.IO.Gif

Ajouter espace de nom en XAML:

xmlns:imagetools="clr-namespace:ImageTools.Controls;assembly=ImageTools.Controls" 

et ressources:

<phone:PhoneApplicationPage.Resources> 
    <imagetools:ImageConverter x:Key="ImageConverter" /> 
</phone:PhoneApplicationPage.Resources> 

Ensuite, utilisez la commande avec le convertisseur:

<imagetools:AnimatedImage Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}" /> 

Votre ImageSource devrait être un Uri, par exemple:

ImageSource = new Uri("http://mysite/my.gif", UriKind.Absolute); 

Ne pas oublier d'ajouter décodée :

ImageTools.IO.Decoders.AddDecoder<GifDecoder>(); 
+0

Est-ce que ça va soutenir Affichage d'un gif animé? – SKandeel

+0

Oui, j'ai juste essayé cela;) –

+1

Je ne peux pas sembler faire fonctionner ceci, le code compile et tout sauf pendant l'initialisation d'exécution jette l'exception au sujet du type de liaison incompatible. Étant donné que ce post date d'environ un an, la bibliothèque ImageTools a-t-elle été mise à jour d'une manière qui serait incompatible avec cela? – Esko

1

Est-ce un GIF animé? Sinon, je voudrais essayer de convertir le format GIF dans un autre format de fichier pris en charge avant de l'utiliser dans votre application. WP7 Silverlight prend en charge JPG/PNG.

+0

Il peut être un fichier GIF animé – Tim

1

+1

Oui , c'est pour ça que je cherchais une lib lib externe :) – Tim

1

Conformément au http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx, le contrôle d'image Silverlight ne prend pas en charge les fichiers GIF. En utilisant ImageTools vous convertissez le fichier GIF en quelque chose d'autre à la volée sur l'appareil. Si vous utilisez des fichiers gif dont vous avez le contrôle (c'est-à-dire que vous les regroupez dans le fichier XAP ou qu'ils proviennent de votre serveur Web), vous devez utiliser des versions converties de ces fichiers.

Cela signifie que l'application doit faire moins.
L'effet d'accrochage est le suivant:
1. Vous devrez écrire moins de code.
2. L'application devra faire moins de travail et fonctionnera donc légèrement mieux.

Bien sûr, cela ne couvre pas les GIF animés. Pour ceux-ci, vous devrez utiliser une approche différente.

+0

Je viens de vérifier le lien que vous avez donné et il dit que GIF est pris en charge sur tous les appareils (maintenant). – T3rm1

+1

@ T3rm1 bien, c'est potentiellement confus. Le système d'exploitation a un support pour ces 4 formats (bmp, jpg, png & gif) de sorte que vous pouvez les voir dans les e-mails ou sur les pages Web. Cependant, Silverlight prend uniquement en charge les formats JPG et PNG (voir remarques http://msdn.microsoft.com/fr-fr/library/system.windows.media.imaging.bitmapimage(v=vs.95).aspx). Cela signifie que vous ne pouvez pas GIF directement dans votre code. –

2

Je me suis battu pour obtenir le travail réponse acceptée.La solution suivante a fonctionné pour moi pour afficher un gif statique.

public ImageResponse(string imageUrl) 
    { 
     InitializeComponent(); 

     ImageTools.IO.Decoders.AddDecoder<GifDecoder>(); 

     var imageResponse = new ExtendedImage(); 
     imageResponse.UriSource = new Uri(imageUrl); 

     imageResponse.LoadingCompleted += this.ImageResponseLoadingCompleted; 
    } 

    private void ImageResponseLoadingCompleted(object sender, EventArgs e) 
    { 
     var imageResponse = (ExtendedImage)sender; 

     Classes.Util.UiThread.Invoke(() => 
      { 
       this.ImageResponse.Source = imageResponse.ToBitmap(); 
      }); 
    } 

Classes.Util.UiThread est une classe d'aide que j'utilise pour appeler l'interface utilisateur Discussion

this.ImageResponse est un contrôle d'image standard

Questions connexes