15. Juli 2009

WPF Image Interop

von Simon Bitschnau | Abgelegt in .NET Framework, C#, WPF

Schon oft gesehen in Beispielen zu Image Interop ist folgender Code:

 

BitmapSource bitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());

Das funktioniert soweit auch hat aber einen entscheidenden Fehler, auf den man schnell kommt, wenn man sich die MSDN Dokumentation anschaut.

Der Handle der von GetHBitmap zurückgeliefert wird, muss nämlich manuell wieder freigegeben werden. Und zwar mit der DeleteObject Methode:

[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);

 

 

 

Share and Enjoy:
  • Technorati
  • Digg
  • Facebook
  • del.icio.us
  • Live
  • Google
  • description
  • description
  • TwitThis
Dieser Text wird durch den Flashinhalt ersetzt.

Kommentar hinzufügen