Como dice me enfrente a un pequeño problema al intentar cargar un stream directamente sobre un componente System.Windows.Controls.Image al invocar al propiedad Source se requiere un objeto ImageSource, investigando y haciendo pruebas descubri que igual puede usarse un elemento System.Windows.Media.Imaging.BitmapImage, el problema y radicaba en como crear el BitmapImage desde WPF.
Generalmente para trabajar con imágenes windows forms se utiliza un picturebox para el cual se utiliza System.Windows.Forms.PictureBox.Image el cual es un objeto: System.Drawing.Image para cargar este existen miles de ejemplos en Internet y funciones nativas como System.Drawing.Image.FromFile() o System.Drawing.Image.FromStream() los cuales nos facilitan la vida; pues bien me di a la tarea de buscar una solución.
La solución que deduje en base a códigos y referencias que vi es la siguiente diseñe una función que recibe un objeto de tipo System.Drawing.Imag y devuelve el requerido System.Windows.Media.Imaging.BitmapImage el cual se puede cargar de forma dinámica en el objeto System.Windows.Controls.Imag de WPF.
EJEMPLO:
private void button1_Click(object sender, RoutedEventArgs e)
{
image1.Source = FromStream(System.Drawing.Image.FromFile(@"C:\....\Pictures\666666.jpg"));
}
Lo cual invoca mi solución a groso modo:
public BitmapImage FromStream(System.Drawing.Image Imagen)
{
BitmapImage bmp = new BitmapImage();
var image = Imagen;
bmp.BeginInit();
MemoryStream memoryStream = new MemoryStream();
image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
bmp.StreamSource = memoryStream;
bmp.EndInit();
return bmp;
}
Por cierto es necesario agregar las librerias :
using System.Windows.Forms;
using System.IO;
using System.Drawing;
Agregalas tanto en referencia como en el .CS de tu ventana WPF.
Tambien puede usuarse:
image.Source = new BitmapImage(
new Uri(@"pack://application:,,,/MyReferencedAssembly/images/Globe.png",
UriKind.RelativeOrAbsolute));
Buenas, estaba leyendo su blog y esta excelente, me gustaria saber si en WPF hay alguna forma de pasar imagenes en 2 formas: 1) Por tiempo, que las imagenes se pasen por ejemplo cada 5 o 10 segundos 2) Que exista una forma en que se pueda pasar ya sea por medio de una flecha o con la mano de ser touch.
ResponderEliminarMuchas gracias
aqui dejo una sencilla
ResponderEliminarBoxImage.Source="https://sitioweb.com/img/imagen.png"
funciona igual para archivos de tu equipo local.