在WPF中使用图像控件来显示System.Drawing.Bitmap

如何将内存中的Bitmap对象分配给WPF中的Image控件?

您可以使用图像的Source属性。 试试这个代码…

 ImageSource imageSource = new BitmapImage(new Uri("C:\\FileName.gif")); image1.Source = imageSource; 

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

它获取System.Drawing.Bitmap(从WindowsBased),并将其转换为BitmapSource,它可以实际上用作图像源在WPF中的图像控件。

 image1.Source = YourUtilClass.loadBitmap(SomeBitmap); 

磁盘文件很容易,但内存中的位图更难。

 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; 

偷在这里

我用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;