Je travaille sur une application Windows 8. J'ai besoin de savoir comment définir par programme la source d'une image. J'ai supposé que l'approche Silverlight fonctionnerait. Mais ce n'est pas le cas. Est-ce que quelqu'un sait comment faire ça? Les éléments suivants ne fonctionneront pas:
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;
J'obtiens une exception qui dit: "Le System.Uri donné ne peut pas être converti en Windows.Foundation.Uri."
Cependant, je n'arrive pas à trouver le type Windows.Foundation.Uri.
J'ai juste essayé
Image.Source = new BitmapImage(
new Uri("http://yourdomain.com/image.jpg", UriKind.Absolute));
Et ça marche sans problème ... J'utilise System.Uri
ici. Vous avez peut-être un URI mal formé ou vous devez utiliser un URI absolu et utiliser UriKind.Absolute
au lieu?
Voici ce que j'utilise:
string url = "ms-appx:///Assets/placeHolder.png";
image.Source = RandomAccessStreamReference.CreateFromUri(new Uri(url));
Bien, Windows.Foundation.Uri
est documenté comme ceci:
.NET: ce type apparaît comme System.Uri.
Donc, le plus difficile n'est pas de le convertir en Windows.Foundation.Uri
vous-même - il semble que WinRT le fasse pour vous. Il semble que le problème soit lié à l'URI que vous utilisez. Quel est-il relatif à dans ce cas? Je suppose que vous avez juste besoin de trouver le bon format pour l'URI.
Cet exemple utilise un objet FileOpenPicker pour obtenir le fichier de stockage. Vous pouvez utiliser la méthode dont vous avez besoin pour accéder à votre fichier en tant qu'objet StorageFile.
Logo est le nom du contrôle d'image.
Référencez le code suivant:
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;
}
}
vérifiez votre pictureUrl car c'est ce qui a entraîné l'exception.
mais cela devrait aussi fonctionner
img.Source = new BitmapImage(new Uri(pictureUrl, UriKind.Absolute));
cela ne devrait avoir rien à voir avec Windows.Foundation.Uri. puisque winrt s'en chargera pour vous.
Essayez ce format:
ms-appx:/Images/800x600/BackgroundTile.bmp
Le System.Uri donné ne peut pas être converti en Windows.Foundation.Uri
<Image Name="Img" Stretch="UniformToFill" />
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;
}