tutorial ejemplos c# xaml windows-runtime

c# - ejemplos - Establecer programáticamente la fuente de una imagen(XAML)



xaml tutorial (7)

Estoy trabajando en una aplicación de Windows 8. Necesito saber cómo establecer programáticamente la fuente de una imagen. Supuse que el enfoque de Silverlight funcionaría. Sin embargo, no es así. ¿Alguien sabe cómo hacer esto? Lo siguiente no funcionará:

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;

Recibo una Excepción que dice: "El System.Uri dado no se puede convertir en Windows.Foundation.Uri".

Sin embargo, parece que no puedo encontrar el tipo Windows.Fundación.Uri.


Bueno, Windows.Foundation.Uri está documentado así:

.NET: este tipo aparece como System.Uri.

Así que lo difícil no es convertirlo en una Windows.Foundation.Uri usted mismo: parece que WinRT hace eso por usted. Parece que el problema es con el URI que estás usando. ¿En qué se relaciona en este caso? Sospecho que realmente solo necesitas encontrar el formato correcto para el URI.


Este ejemplo usa un objeto FileOpenPicker para obtener el archivo de almacenamiento. Puede usar cualquier método que necesite para acceder a su archivo como un objeto StorageFile.

Logo es el nombre del control de imagen.

Referencia el siguiente código:

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; } }


Esto es lo que uso:

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



Yo solo intenté

Image.Source = new BitmapImage( new Uri("http://yourdomain.com/image.jpg", UriKind.Absolute));

Y funciona sin problemas ... Estoy usando System.Uri aquí. ¿Tal vez tienes un URI malformado o tienes que usar un URI absoluto y usar UriKind.Absolute en UriKind.Absolute lugar?


revise su pictureUrl ya que fue lo que resultó en la excepción.

pero esto debería funcionar tan bien

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

no debería tener nada que ver con Windows.Foundation.Uri. ya que winrt lo manejará por ti.


<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; }