从C#中的picturebox获取BitMapsource



我有一个名为 picture的图像框我想获取此picturebox的图像,并将其保存为Bitmapsource

BitmapSource myPic;
  myPic = picture.Image;

但是我得到了这个错误:

严重性代码描述项目文件行抑制状态错误CS0029无法将类型" System.Drawing.image"隐式转换为'System.Windows.Media.imaging.bitmapsource'

您需要将System.Drawing.image转换为System.Drawing.BitMap,然后下一个将其转换为BitMapsource。

您可以选择其中一种解决方案:快速将位图转换为bitmapsource wpf

使用此方法:

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

最新更新