XP上的Bitmap.GetHbitmap()失败
问题描述:
我的NET 2.0 Winforms应用程序在Vista和Windows 7上运行良好,但在Windows XP上调用Bitmap.GetHbitmap()
返回null
(即使使用SP3)。底层Bitmap
是一个PNG并从资源中加载。它被正确加载,因此它被降到GetHbitmap()
。我曾尝试调用两个重载以相同的结果。XP上的Bitmap.GetHbitmap()失败
答
观看了内存泄漏,同时调试和与.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#
问候
只是为了澄清,你没有得到'null'但'IntPtr.Zero'相反,对? – 2011-04-28 12:53:40
尝试更新相关的DLL文件:http://www.microsoft.com/downloads/en/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=zh-CN – 2011-04-28 12:53:54
糟糕。抱歉。那是对的。不是'null'而是'IntPtr.Zero'。 – wpfwannabe 2011-04-28 13:00:02