在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;