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