个人随笔
技术改变世界

WPF Image转换为ImageSource

在WPF中通常图像都是使用图像源的方式“ImageSource”,个别情况我们在编写代码中得到的是一个 Image 对象 这个时候想要将其转换为“ImageSource” 于是就有了下面的代码:

 

[DllImport("gdi32.dll", SetLastError = true)]
private static extern bool DeleteObject(IntPtr hObject);

//将 Bitmap转换为BitmapSource
//使用过System.Drawing.Bitmap后一定要用DeleteObject释放掉对象,不然内存不释放,很快系统内存就消耗光了。
private static ImageSource BitmapToBitmapSource(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;
}

转载请注明出处王旭博客 » WPF Image转换为ImageSource

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址