我怎样才能免费获得hbitmap

您好我有以下函数,我后来从c#使用以显示位图“Bitmap.FromHbitmap(IntPtr)”但在几次使用后,这以内存泄漏结束。

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

可能我应该删除对象,但我不知道我能做什么,我在返回之前尝试过,但我最终没有图像,但gdi错误

谢谢,

我假设您使用的是C#。

您可以使用DeleteObject删除此HBITMAP。

声明如下:

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

并删除对象:

 API.DeleteObject(hBitmap); 

当您的函数返回指向HBITMAP的指针时,您无法在返回之前将其删除。 相反,当不再使用此位图时,您应该稍后删除它。