【问题标题】:How to convert from HBITMAP to .NET's Bitmap class?如何从 HBITMAP 转换为 .NET 的 Bitmap 类?
【发布时间】:2008-12-04 18:31:17
【问题描述】:

我正在使用一些使用CreateDIBSection 函数创建位图并返回HBITMAP 句柄的C++ 代码。将此信息导入我的 .NET 程序集的最佳方法是什么?

【问题讨论】:

    标签: c# c++ pinvoke


    【解决方案1】:

    静态方法Image.FromHbitmap(IntPtr hbitmap) 可能就是您要找的。​​p>

    【讨论】:

    • 但是我必须从 C# 中释放位图吗?
    • 是的,你可以调用 Dispose(): using (Bitmap bmp = Image.FromHbitmap(hbitmap)) { /* 对位图做一些工作 */ }
    • 我发现我需要调用 DeleteObject 来摆脱 gdi 位图。托管位图是一个副本,因此可以安全地立即调用。 [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject);
    【解决方案2】:

    您是否尝试过为您的位图编组字节数组,将其加载到 MemoryStream 中,然后使用该流构建位图类?

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 2012-12-12
      • 1970-01-01
      • 2014-08-29
      • 2018-04-25
      • 2012-09-08
      • 2010-09-26
      • 2013-07-10
      • 2011-06-02
      相关资源
      最近更新 更多