_银子

提供更专注、更专心、更专业的服务
  首页  :: 联系 :: 订阅 订阅  :: 管理

图片类型转换

Posted on 2013-04-27 10:43  _银子  阅读(180)  评论(0)    收藏  举报
1.从bitmap转换成ImageSource

   [DllImport("gdi32.dll", SetLastError = true)]

private static extern bool DeleteObject(IntPtr hObject);

/// <summary>

/// 从bitmap转换成ImageSource

/// </summary>

/// <param name="icon"></param>

/// <returns></returns>

public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)

{

IntPtr hBitmap = bitmap.GetHbitmap();

ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(

hBitmap,

IntPtr.Zero,

Int32Rect.Empty,

BitmapSizeOptions.FromEmptyOptions());

if (!DeleteObject(hBitmap))//记得要进行内存释放。否则会有内存不足的报错。

{

throw new System.ComponentModel.Win32Exception();

}

return wpfBitmap;

}

2.从Bitmap转换成BitmapSource

/// <summary>

/// 从Bitmap转换成BitmapSource

/// </summary>

/// <param name="bmp"></param>

/// <returns></returns>

public static BitmapSource ChangeBitmapToBitmapSource(this Bitmap bmp)

{

BitmapSource returnSource;

try

{

returnSource = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

}

catch

{

returnSource = null;

}

return returnSource;

}

3.从Icon到ImageSource的转换

/// <summary>

/// 从Icon到ImageSource的转换

/// </summary>

public ImageSource ChangeIconToImageSource( Icon icon)

{

ImageSource imageSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(

icon.Handle,

Int32Rect.Empty,

BitmapSizeOptions.FromEmptyOptions());

return imageSource;

}