Bitmap.GetHbitmap() 在 XP 上失败

Bitmap.GetHbitmap() fails on XP

提问人:wpfwannabe 提问时间:4/28/2011 最后编辑:stivlowpfwannabe 更新时间:11/11/2011 访问量:773

问:

我的 NET 2.0 Winforms 应用程序在 Vista 和 Windows 7 上运行良好,但在 Windows XP(即使使用 SP3)上调用返回。基础是 PNG,是从资源加载的。它被正确加载,因此它归结为 .我尝试以相同的结果调用两个重载。Bitmap.GetHbitmap()nullBitmapGetHbitmap()

C# net-2.0

评论

1赞 Chris Haas 4/28/2011
澄清一下,你没有得到,而是,对吧?nullIntPtr.Zero
0赞 Shadow Wizard Is Sad And Angry 4/28/2011
尝试更新相关的DLL:microsoft.com/downloads/en/...
0赞 wpfwannabe 4/28/2011
哎呀。不好意思。这是正确的。不是,而是.nullIntPtr.Zero
0赞 Thomas Levesque 4/28/2011
你能发布一些代码吗?我刚刚在XP SP3上尝试过,我得到了一个有效的HBITMAP...
2赞 justin.m.chase 8/17/2011
如果这个问题不再相关,你能关闭它吗?

答:

0赞 Nasenbaer 11/11/2011 #1

在调试和使用.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

和类似的问题:使用 C# 进行图像加载内存泄漏

问候