2013-06-05 131 views
1

你好,我有以下功能,我用c#之后用“Bitmap.FromHbitmap(IntPtr)”显示一个位图,但是在几次使用后,这会以内存泄漏结束。我怎样才能释放hbitmap

IntPtr GetFrame(int Width,int Height,int nFrame) 
    { 
     width= Width; 
     height = Height; 
     HBITMAP hb; 
     m_piHelper->GetBmp(width,height,nFrame,&hb);  
     return IntPtr(hb); 
    } 

也许我应该somewere DeleteObject的,但我不知道我能做到这一点我回来之前试过,但我最终没有图像,但一个GDI错误

谢谢

+0

这不是C++。 – jmucchiello

回答

2

我想你正在使用C#。

您可以使用DeleteObject删除此HBITMAP。

声明这样说:

using System.Runtime.InteropServices class API { [DllImport("WINGDI32.dll")] public static extern int DeleteObject(IntPtr hObject); } 

,并删除对象:

API.DeleteObject(hBitmap); 

当你的函数返回一个指向HBITMAP,你不能返回之前将其删除。相反,如果不再使用此位图,则应该稍后将其删除。