Тема: Как загружать картинки из Интернет
В одной из предыдущих заметок мы говорили о том, что для больших клиентов предпочтительнее откладывать загрузку контролов (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)