c# - tutorial - wpf vs windows forms
Usar el control de imagen en WPF para mostrar System.Drawing.Bitmap (4)
De acuerdo con http://khason.net/blog/how-to-use-systemdrawingbitmap-hbitmap-in-wpf/
[DllImport("gdi32")]
static extern int DeleteObject(IntPtr o);
public static BitmapSource loadBitmap(System.Drawing.Bitmap source)
{
IntPtr ip = source.GetHbitmap();
BitmapSource bs = null;
try
{
bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip,
IntPtr.Zero, Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(ip);
}
return bs;
}
Obtiene System.Drawing.Bitmap (de Windowsbased) y lo convierte en BitmapSource, que en realidad se puede utilizar como fuente de imagen para su control de imagen en WPF.
image1.Source = YourUtilClass.loadBitmap(SomeBitmap);
¿Cómo asigno un objeto Bitmap
en memoria a un control de Image
en WPF?
Es fácil para el archivo de disco, pero más difícil para Bitmap en la memoria.
System.Drawing.Bitmap bmp;
Image image;
...
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
ms.Position = 0;
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ms;
bi.EndInit();
image.Source = bi;
Escribí un programa con wpf
y usé Database para mostrar imágenes y este es mi código:
SqlConnection con = new SqlConnection(@"Data Source=HITMAN-PC/MYSQL;
Initial Catalog=Payam;
Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select * from news", con);
DataTable dt = new DataTable();
da.Fill(dt);
string adress = dt.Rows[i]["ImgLink"].ToString();
ImageSource imgsr = new BitmapImage(new Uri(adress));
PnlImg.Source = imgsr;
Puede usar la propiedad Fuente de la imagen. Prueba este código ...
ImageSource imageSource = new BitmapImage(new Uri("C://FileName.gif"));
image1.Source = imageSource;