C# 从C中的picturebox获取bitmapsource#

C# 从C中的picturebox获取bitmapsource#,c#,bitmap,bitmapsource,C#,Bitmap,Bitmapsource,我有一个叫picture 我想获取此picturebox的图像并将其另存为bitmapsource BitmapSource myPic; myPic = picture.Image; 但我得到了这个错误: 严重性代码说明项目文件行抑制状态 错误CS0029无法将类型“System.Drawing.Image”隐式转换为“System.Windows.Media.Imaging.BitmapSource”您需要将System.Drawing.Image转换为System.Drawing.B

我有一个叫
picture
我想获取此picturebox的图像并将其另存为bitmapsource

BitmapSource myPic;
  myPic = picture.Image;
但我得到了这个错误:

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

您需要将System.Drawing.Image转换为System.Drawing.Bitmap,然后将其转换为BitmapSource

您可以选择以下解决方案之一:

您需要将System.Drawing.Image转换为System.Drawing.Bitmap,然后将其转换为BitmapSource

您可以选择以下解决方案之一: 使用此方法:

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;
}
使用此方法:

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