我怎样才能免费获得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的指针时,您无法在返回之前将其删除。 相反,当不再使用此位图时,您应该稍后删除它。