2010-11-11 9 views

Odpowiedz

19

Rzeczywiście, działa, ale brakuje w nim dokumentacji.

Po pewnych kłopotach, oto jak go używać:

  • ImageTools referencyjne
  • ImageTools.Controls referencyjne
  • odniesienia ImageTools.IO.Gif

Dodaj nazw w XAML:

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

i zasobów:

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

Następnie za pomocą sterowania z konwerterem:

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

Twój ImageSource powinny być Uri, na przykład:

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

Nie zapomnij dodać dekodowany :

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

Czy to pomoże Wyświetlanie animowanego gifa? – SKandeel

+0

Tak, właśnie próbowałem;) –

+1

Nie mogę sprawić, żeby to działało, kod kompiluje się i wszystko oprócz inicjowania w czasie wykonywania zgłasza wyjątek dotyczący niezgodnego typu wiązania. Ponieważ ten post ma około roku, czy biblioteka ImageTools została zaktualizowana w sposób, który byłby niezgodny z tym? – Esko

1

Czy animowany GIF? Jeśli nie, spróbuję przekonwertować GIF na inny obsługiwany format pliku, zanim użyję go w swojej aplikacji.

+0

To może być animowany gif – Tim

1

WP7 Silverlight obsługuje JPG/PNG.

+1

Tak , dlatego szukałem extern lib :) – Tim

1

Zgodnie z http://msdn.microsoft.com/en-us/library/ff462087(VS.92).aspx formant obrazu Silverlight nie obsługuje plików GIF.

Za pomocą ImageTools konwertujesz plik GIF do czegoś innego w locie na urządzeniu. Jeśli korzystasz z plików gif, nad którymi masz kontrolę (tj. Kupujesz je w XAP lub pochodzą ze swojego serwera sieciowego), powinieneś użyć przekonwertowanych wersji tych plików.

Oznacza to, że aplikacja musi zrobić mniej.
Efekt domina jest następujący:
1. Będziesz musiał napisać mniej kodu.
2. Aplikacja będzie musiała wykonać mniej pracy, a więc będzie działać nieco lepiej.

Oczywiście nie obejmuje to animowanych obrazów GIF. W tym celu musisz zastosować inne podejście.

+0

Właśnie sprawdziłem podany link i mówi, że GIF jest obsługiwany na wszystkich urządzeniach (teraz). – T3rm1

+1

@ T3rm1 cóż, to może być mylące. System operacyjny obsługuje 4 formaty (bmp, jpg, png i gif), dzięki czemu można je wyświetlać w wiadomościach e-mail lub na stronach internetowych. JEDNAK, Silverlight obsługuje tylko formaty JPG i PNG (patrz uwagi: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage(v=vs.95).aspx). Oznacza to, że nie możesz GIF-y bezpośrednio w swoim kodzie. –

2

Walczyłem, aby uzyskać odpowiedź zaakceptowana roboczą.Poniższe rozwiązanie działało dla mnie, aby wyświetlić statyczny GIF.

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 jest klasa pomocnika używam zadzwonić UI Przewlecz

this.ImageResponse jest standardowym kontrola obrazu

Powiązane problemy