Программно установите источник изображения (XAML)

Я работаю над Windows 8. Мне нужно знать, как программно установить источник изображения. Я предположил, что подход Silverlight будет работать. Однако это не так. Кто-нибудь знает, как это сделать? Следующие действия не будут работать:

string pictureUrl = GetImageUrl(); Image image = new Image(); image.Source = new Windows.UI.Xaml.Media.Imaging.BitmapImage(new Uri(pictureUrl, UriKind.Relative)); image.Stretch = Stretch.None; image.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left; image.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Center; 

Я получаю Исключение, в котором говорится: «Данный System.Uri не может быть преобразован в Windows.Foundation.Uri».

Однако я не могу найти тип Windows.Foundation.Uri.

Я просто попробовал

 Image.Source = new BitmapImage( new Uri("http://sofru.miximages.com/c%23/image.jpg", UriKind.Absolute)); 

И это работает без проблем … Я использую System.Uri здесь. Может быть, у вас неправильный URI, или вы должны использовать абсолютный URI и вместо этого использовать UriKind.Absolute ?

Это то, что я использую:

 string url = "ms-appx:///Assets/placeHolder.png"; image.Source = RandomAccessStreamReference.CreateFromUri(new Uri(url)); 

Ну, Windows.Foundation.Uri документируется следующим образом:

.NET: этот тип появляется как System.Uri.

Таким образом, сложный бит не конвертирует его в Windows.Foundation.Uri – похоже, что WinRT делает это для вас. Похоже, проблема связана с используемым URI. Что это относительно этого? Я подозреваю, что вам просто нужно найти правильный формат для URI.

проверьте ваш pictureUrl, поскольку это привело к исключению.

но это тоже должно работать

 img.Source = new BitmapImage(new Uri(pictureUrl, UriKind.Absolute)); 

он не должен иметь ничего общего с Windows.Foundation.Uri. так как winrt справится с этим для вас.

В этом примере для получения файла хранилища используется объект FileOpenPicker. Вы можете использовать любой метод, необходимый для доступа к вашему файлу в качестве объекта StorageFile.

Логотип – это название элемента управления изображением.

Ссылка на следующий код:

  var fileOpenPicker = new FileOpenPicker(); fileOpenPicker.ViewMode = PickerViewMode.Thumbnail; fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; fileOpenPicker.FileTypeFilter.Add(".png"); fileOpenPicker.FileTypeFilter.Add(".jpg"); fileOpenPicker.FileTypeFilter.Add(".jpeg"); fileOpenPicker.FileTypeFilter.Add(".bmp"); var storageFile = await fileOpenPicker.PickSingleFileAsync(); if (storageFile != null) { // Ensure the stream is disposed once the image is loaded using (IRandomAccessStream fileStream = await storageFile.OpenAsync(Windows.Storage.FileAccessMode.Read)) { // Set the image source to the selected bitmap BitmapImage bitmapImage = new BitmapImage(); await bitmapImage.SetSourceAsync(fileStream); Logo.Source = bitmapImage; } } 

Попробуйте этот формат:

 ms-appx:/Images/800x600/BackgroundTile.bmp 

Данная System.Uri не может быть преобразована в Windows.Foundation.Uri

  var file = await KnownFolders.PicturesLibrary.GetFileAsync("2.jpg"); using(var fileStream = (await file.OpenAsync(Windows.Storage.FileAccessMode.Read))){ var bitImg= new BitmapImage(); bitImg.SetSource(fileStream); Img.Source = bitImg; }