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));
Prueba este formato:
ms-appx:/Images/800x600/BackgroundTile.bmp
El System.Uri dado no se puede convertir en Windows.Foundation.Uri
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;
}