我的.NET 2.0 Winforms应用程序在Vista和Windows 7上运行得非常好,但在Windows XP上(即使是SP3),调用Bitmap.GetHbitmap()
返回null
。底层的Bitmap
是一个PNG,并从资源中加载。它被正确地加载,因此问题出在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
null
而是IntPtr.Zero
,对吗? - Chris Haas