【问题标题】:Bitmap.GetHbitmap() fails on XPBitmap.GetHbitmap() 在 XP 上失败
【发布时间】:2011-08-14 16:39:47
【问题描述】:

我的 NET 2.0 Winforms 应用程序在 Vista 和 Windows 7 上运行良好,但在 Windows XP 上调用 Bitmap.GetHbitmap() 会返回 null(即使使用 SP3)。底层Bitmap 是一个PNG,是从资源中加载的。它已正确加载,因此降至GetHbitmap()。我试过调用两个重载,结果相同。

【问题讨论】:

  • 澄清一下,你得到的不是null,而是IntPtr.Zero,对吧?
  • 尝试更新相关DLL:microsoft.com/downloads/en/…
  • 糟糕。对不起。那是正确的。不是null,而是IntPtr.Zero
  • 你能发布一些代码吗?我刚刚在 XP SP3 上尝试过,我得到了一个有效的 HBITMAP...
  • 如果这个问题不再相关,你能关闭它吗?

标签: c# .net .net-2.0


【解决方案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

和类似的问题: Image loading memory leak with C#

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    • 2015-07-18
    • 2010-09-23
    • 2014-02-06
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多