2011-04-28 36 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#

问候

相关问题