2011-08-26 1 views
0

Je souhaite afficher l'image gif dans le contrôle d'image de l'interface utilisateur.Afficher l'image gif dans l'image Fenêtre de contrôle de l'interface utilisateur Téléphone 7

J'ai l'image image1;

image1.source = new BitmapImage (nouveau Uri (lien, UriKind.Absolute));

mais le lien dans Uri est une image .gif. J'ai lu ceci: imagetool cependant je ne comprends toujours pas comment utiliser la bibliothèque. J'ai téléchargé la bibliothèque et ajouté des références, puis à partir de ce que je suis coincé, je veux définir la source dans le code. Pouvez-vous nous aider à l'expliquer un peu plus?

Mon code comme actuellement ceci:

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

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid HorizontalAlignment="Right" Width="69"> 
     <Border BorderBrush="White" BorderThickness="3" CornerRadius="7" Background="Black"> 
      <Image Width="69" Height="69" Name="canvasImage" Stretch="UniformToFill" HorizontalAlignment="Center" VerticalAlignment="Center" ImageFailed="canvasImage_ImageFailed" /> 
     </Border> 
     <Border BorderBrush="White" BorderThickness="3" CornerRadius="7" Background="Black"> 
      <imagetools:AnimatedImage Name="canvasGifImage" Width="69" Height="69" Stretch="UniformToFill" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
     </Border> 
    </Grid> 
</Grid> 

 In my MainPage.xaml.cs, because I don't know whether it is an png/jpg or a gif, so I have it try to load png/jpg first, if failed then try load gif in the imagetools control name canvasGifImage: 

     private void DisplayImage(int index, string link) 
    { 
     try 
     { 
      control1.canvasImage.Source = new BitmapImage(new Uri(link, UriKind.Absolute)); 
     } 
     catch //if fail to load image as normal, do this 
     { 
      //but I dont know how to set Source for the canvasGifImage, help me here: 

      control1.canvasGifImage.Source = *new BitmapImage(new Uri(link, UriKind.Absolute));* 

     } 
    } 
+0

affichant votre code rend plus facile de voir ce que vous faites et proposer des solutions appropriées. –

Répondre

0

Remplacer l'utilisation du ManualResetEvent pour le code async.

using (var resetEvent = new ManualResetEvent(false)) 
{ 
    ImageTools.IO.Decoders.AddDecoder<GifDecoder>(); 
    var extendedImage = new ExtendedImage(); 
    extendedImage.LoadingCompleted += (s, e) => resetEvent.Set(); 
    extendedImage.LoadingFailed += (s, e) => resetEvent.Set(); 
    extendedImage.SetSource(gifStream); 
    resetEvent.WaitOne(TimeSpan.FromSeconds(5)); 

    // Check for timeout or error 

    var enc = new JpegEncoder(); 
    var jpegStream = new MemoryStream(); 
    enc.Encode(extendedImage, jpegStream); 
    ... 

}

+0

Je ne reçois pas vraiment votre réponse ... –

Questions connexes