2017-04-15 16 views
0

我有一个PictureBox称为picture 我想这个图片框的图像,并将其保存为的BitmapSource得到C#中的图片框的BitmapSource

BitmapSource myPic; 
    myPic = picture.Image; 

,但我得到这个错误:

严重性代码说明项目文件行抑制状态 错误CS0029无法将类型'System.Drawing.Image'隐式转换为'System.Windows.Media.Imaging.BitmapSource'

回答

1

使用这种方法:

public BitmapSource ImageToBitmapSource(System.Drawing.Image image) 
{ 
     var bitmap = new System.Drawing.Bitmap(image); 

     var bitSrc =BitmapToBitmapSource(bitmap); 

     bitmap.Dispose(); 
     bitmap = null; 

     return bitSrc; 
} 

public BitmapSource BitmapToBitmapSource(System.Drawing.Bitmap source) 
{ 
     BitmapSource bitSrc = null; 

     var hBitmap = source.GetHbitmap(); 

     try 
     { 
      bitSrc = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
       hBitmap, 
       IntPtr.Zero, 
       Int32Rect.Empty, 
       BitmapSizeOptions.FromEmptyOptions()); 
     } 
     catch (Win32Exception) 
     { 
      bitSrc = null; 
     } 

     return bitSrc; 
}