2010-11-11 15 views

Respuesta

19

De hecho, está funcionando, pero le falta algo de documentación.

Después de algunas dificultades, aquí es cómo usarlo:

  • ImageTools referencia
  • ImageTools.Controls referencia
  • referencia ImageTools.IO.Gif

Añadir espacio de nombres en XAML:

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

y recursos:

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

y utilice el control con el convertidor:

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

Su ImageSource debe ser un Uri, por ejemplo:

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

No se olvide de agregar decodificados :

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

¿Eso respalda la visualización de un gif animado? – SKandeel

+0

Sí, lo he intentado;) –

+1

Parece que no puedo hacer que esto funcione, el código se compila y todo menos durante la inicialización del tiempo de ejecución arroja una excepción sobre el tipo de enlace incompatible. Dado que esta publicación tiene aproximadamente un año de antigüedad, ¿se ha actualizado la biblioteca de ImageTools de una manera que sería incompatible con esto? – Esko

1

¿Es un GIF animado? De lo contrario, trataría de convertir el GIF a otro formato de archivo compatible antes de usarlo en tu aplicación.

+0

Puede ser un gif animado – Tim

1

WP7 Silverlight admite JPG/PNG.

+1

Sí , es por eso que estaba buscando una lib externa :) – Tim

1

Según http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx, el control de imagen de Silverlight no admite archivos GIF.

Al usar ImageTools está convirtiendo el archivo GIF a otra cosa sobre la marcha en el dispositivo. Si está utilizando archivos gif de los que tiene control (es decir, los está agrupando en el XAP o provienen de su servidor web), debe usar las versiones convertidas de estos archivos.

Esto significa que la aplicación tiene que hacer menos.
El efecto de golpe es que:
1. Tendrá que escribir menos código.
2. La aplicación tendrá que hacer menos trabajo y, por lo tanto, funcionará un poco mejor.

Por supuesto, esto no incluye los GIF animados. Para estos, necesitarás usar un enfoque diferente.

+0

Acabo de comprobar el enlace que diste y dice que GIF es compatible con todos los dispositivos (ahora). – T3rm1

+1

@ T3rm1 bueno, eso es potencialmente confuso. El SO tiene soporte para esos 4 formatos (bmp, jpg, png y gif) para que pueda verlos en correos electrónicos o en páginas web. SIN EMBARGO, Silverlight solo es compatible con los formatos JPG y PNG (Ver comentarios http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage(v=vs.95).aspx). Esto significa que no puede GIF directamente en su código. –

2

me costó obtener la respuesta aceptada de trabajo.La siguiente solución funcionó para mí para mostrar un gif estático.

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 es una clase de ayuda que utilizo para llamar a la interfaz de usuario de rosca

this.ImageResponse es un control de imagen estándar

Cuestiones relacionadas