1

Тема: Как загружать картинки из Интернет

В одной из предыдущих заметок мы говорили о том, что для больших клиентов предпочтительнее откладывать загрузку  контролов (DLL) с сервера до тех пор, пока они реально не понадобятся клиенту, чем объединять их всех в один большой клиентский файл. Тот же принцип применим и к картинкам. Предположим, в вашей игре используется большая библиотека картинок, но не все эти картинки требуются при старте игры. Теперь я покажу вам, как динамически загружать картинки по мере необходимости.

Для загрузки картинки с сервера начните с создания BitmapImage. Вы должны добавить оператор using с ссылкой на System.Windows.Media.Imaging. После того, как создали BitmapImage задайте полю UriSource абсолютный путь к файлу картинки, которую вы хотели бы загрузить из Интернет. В примере я использовал следующий адерс: http://www.silverligthdev.net/images/myImage.png. Теперь установите BitmapImage в качестве значения поля Source вашего Image контрола.

Вот пример XAML содержащего контрол Image, который должен быть загружен из сети:

<Canvas x:Name="LayoutRoot" Background="White">
    <Image x:Name="MyImage"></Image>
</Canvas>

Следующий код на C# демонстрирует, как загрузить изображение из файла расположенного на сервере. Когда 100% данных будут загружены, сработает событие ImageOpened.

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
 
        BitmapImage bi = new BitmapImage();
        bi.UriSource = new Uri("http://www.silverlightdev.net/images/blogImages/Sample.png");
        MyImage.Source = bi;
 
        MyImage.ImageOpened += new EventHandler<RoutedEventArgs>(MyImage_ImageOpened);
    }
 
    void MyImage_ImageOpened(object sender, RoutedEventArgs e)
    {
        // Image load complete.
    }
}

(первоисточник: Silverlight Tip of the Day #86 – How to Load External Images)

Читайте также:
Как проигнорировать кеш картинки
Как обрабатывать ошибки загрузки картинок (AG_E_NETWORK_ERROR)

Thumbs up Thumbs down