乐时光博客园子

[reprinted:张子浩]

一、WPF的Image控件中设置ImageSource

image1.Source = new BitmapImage(new Uri(@"image file path", Urikind.RelativeOrAbsolute));

还可以使用:

System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read);byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length);fs.Close(); fs.Dispose();System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);BitmapImage bitmapImage = new BitmapImage();bitmapImage.BeginInit();bitmapImage.StreamSource = ms;bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit();ms.Dispose();image1.Source = bitmapImage;

还可以使用:

BitmapImage bitmapImage = new BitmapImage();bitmapImage.BeginInit();bitmapImage.CacheOption = BitmapCacheOption.OnLoad;bitmapImage.UriSource = new Uri(szPath);//szPath为图片的全路径bitmapImage.EndInit();bitmapImage.Freeze();image1.Source = bitmapImage;

二、Bitmap转BitmapImage 
先将Bitmap储存成memorystream,然后指定给BitmapImage

private BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap){BitmapImage bitmapImage = new BitmapImage();using (System.IO.MemoryStream ms = new System.IO.MemoryStream()){  bitmap.Save(ms, bitmap.RawFormat);  bitmapImage.BeginInit();  bitmapImage.StreamSource = ms;  bitmapImage.CacheOption = BitmapCacheOption.OnLoad;  bitmapImage.EndInit();  bitmapImage.Freeze();}  return bitmapImage;}image1.Source = BitmapToBitmapImage(bitmap);

三、Bitmap转BitmapSource

/*-------------------------------------------------------------------------//Imaging.CreateBitmapSourceFromHBitmap方法,基于所提供的非托管位图和调色板信息的指针,//返回一个托管的BitmapSource---------------------------------------------------------------------------*/Bitmap bitmap = CaptureScreen.GetDesktopImage();IntPtr ip = bitmap.GetHbitmap();//从GDI+ Bitmap创建GDI位图对象BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(ip, IntPtr.Zero, Int32Rect.Empty,System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());image1.Source = bitmapSource;

四、BitmapSource转Bitmap

BitmapSource m = (BitmapSource)image1.Source;System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(m.PixelWidth, m.PixelHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); System.Drawing.Imaging.BitmapData data = bmp.LockBits(new System.Drawing.Rectangle(System.Drawing.Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); m.CopyPixels(Int32Rect.Empty, data.Scan0, data.Height * data.Stride, data.Stride); bmp.UnlockBits(data);

本文来源于互联网:WPF(C#)中Bitmap与BitmapImage相互转换  https://www.lesg.cn  本文中来自互联网如有侵权请联系删除。

上下篇:

相关推荐