X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=Parasitemia%2FWPF%2FBitmapSourceConverter.cs;fp=Parasitemia%2FWPF%2FBitmapSourceConverter.cs;h=413a53bb93ca86b2c5389354ab560bf30c5646c2;hb=ba64921fb9a0c36cd8cf802cbf1b2c0f79bc25f6;hp=0000000000000000000000000000000000000000;hpb=0ff8fb82457bd5a858b2218ab07f69c81323537e;p=master-thesis.git
diff --git a/Parasitemia/WPF/BitmapSourceConverter.cs b/Parasitemia/WPF/BitmapSourceConverter.cs
new file mode 100644
index 0000000..413a53b
--- /dev/null
+++ b/Parasitemia/WPF/BitmapSourceConverter.cs
@@ -0,0 +1,47 @@
+//----------------------------------------------------------------------------
+// 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;
+ }
+ }
+ }
+}
\ No newline at end of file