从 C# 中的图片框获取位图源
Get bitmapsource from a picturebox in C#
我有一个名为 picture
的图片框
我想得到这个picturebox的图片,保存为bitmapsource
BitmapSource myPic;
myPic = picture.Image;
但是我得到这个错误:
严重性代码说明项目文件行抑制状态
错误 CS0029 无法将类型 'System.Drawing.Image' 隐式转换为 'System.Windows.Media.Imaging.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;
}
我有一个名为 picture
的图片框
我想得到这个picturebox的图片,保存为bitmapsource
BitmapSource myPic;
myPic = picture.Image;
但是我得到这个错误:
严重性代码说明项目文件行抑制状态 错误 CS0029 无法将类型 'System.Drawing.Image' 隐式转换为 'System.Windows.Media.Imaging.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;
}