2011-04-28 80 views
4

我的NET 2.0 Winforms應用程序在Vista和Windows 7上運行良好,但在Windows XP上調用Bitmap.GetHbitmap()返回null(即使使用SP3)。底層Bitmap是一個PNG並從資源中加載。它被正確加載,因此它被降到GetHbitmap()。我曾嘗試調用兩個重載以相同的結果。XP上的Bitmap.GetHbitmap()失敗

+1

只是爲了澄清,你沒有得到'null'但'IntPtr.Zero'相反,對? – 2011-04-28 12:53:40

+0

嘗試更新相關的DLL文件:http://www.microsoft.com/downloads/en/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=zh-CN – 2011-04-28 12:53:54

+0

糟糕。抱歉。那是對的。不是'null'而是'IntPtr.Zero'。 – wpfwannabe 2011-04-28 13:00:02

回答

0

觀看了內存泄漏,同時調試和與.GetHBitmap

當你使用此功能,您需要手動刪除的對象的工作!

MSDN例如: http://msdn.microsoft.com/en-us/library/1dz311e4.aspx

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _ 
    Private Shared Function DeleteObject (ByVal hObject As IntPtr) As Boolean 
    End Function 



    Private Sub DemonstrateGetHbitmap() 
     Dim bm As New Bitmap("Picture.jpg") 
     Dim hBitmap As IntPtr 
     hBitmap = bm.GetHbitmap() 

     ' Do something with hBitmap. 
     DeleteObject(hBitmap) 
    End Sub 

和類似的問題: Image loading memory leak with C#

問候

相關問題