Я полагаю, что "ipp" стоит из файла "реализации". т.е., они содержат на самом деле код (для подставляемых функций & шаблоны), а не просто объявление (которые находятся в заголовке-.H или.HPP - файлы)
MSDN для Bitmap.GetHbitmap ()
утверждает:
Замечания
Вы несете ответственность за вызов метода GDI DeleteObject для освобождения памяти, используемой объектом растрового изображения GDI.
Поэтому используйте следующий код:
// at class level
[System.Runtime.InteropServices.DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
// your code
using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(1000, 1000))
{
IntPtr hBitmap = bmp.GetHbitmap();
try
{
var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
}
finally
{
DeleteObject(hBitmap);
}
}
Я также заменил ваш вызов Dispose ()
на ] с помощью оператора
.