2013-06-05 75 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,你不能返回之前將其刪除。相反,如果不再使用此位圖,則應該稍後將其刪除。