如何在 WPF 中将内存中的 Bitmap对象分配给 Image控件?
Bitmap
Image
According to 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; }
It gets System.Drawing.Bitmap (from WindowsBased) and converts it into BitmapSource, which can be actually used as image source for your Image control in WPF.
image1.Source = YourUtilClass.loadBitmap(SomeBitmap);
You can use the Source property of the image. Try this code...
ImageSource imageSource = new BitmapImage(new Uri("C:\\FileName.gif")); image1.Source = imageSource;
It's easy for disk file, but harder for Bitmap in memory.
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;
Stealed here
I wrote a program with wpf and used Database for showing images and this is my code:
wpf
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;