//----------------------------------------------------------------------------
// Copyright (C) 2004-2015 by EMGU Corporation. All rights reserved.
//----------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Emgu.CV;
namespace Emgu.CV.WPF
{
public static class BitmapSourceConvert
{
///
/// Delete a GDI object
///
/// The poniter to the GDI object to be deleted
///
[DllImport("gdi32")]
private static extern int DeleteObject(IntPtr o);
///
/// Convert an IImage to a WPF BitmapSource. The result can be used in the Set Property of Image.Source
///
/// The Emgu CV Image
/// The equivalent BitmapSource
public static BitmapSource ToBitmapSource(IImage image)
{
using (System.Drawing.Bitmap source = image.Bitmap)
{
IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap
BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
ptr,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ptr); //release the HBitmap
return bs;
}
}
}
}