如何从 HBITMAP 转换为 .NET 的 Bitmap 类?
Posted
技术标签:
【中文标题】如何从 HBITMAP 转换为 .NET 的 Bitmap 类?【英文标题】:How to convert from HBITMAP to .NET's Bitmap class? 【发布时间】:2008-12-04 18:31:17 【问题描述】:我正在使用一些使用CreateDIBSection
函数创建位图并返回HBITMAP
句柄的C++ 代码。将此信息导入我的 .NET 程序集的最佳方法是什么?
【问题讨论】:
【参考方案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 中,然后使用该流构建位图类?
【讨论】:
以上是关于如何从 HBITMAP 转换为 .NET 的 Bitmap 类?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Bitmap::GetHBITMAP 将位图转换为带有 alpha 的 HBITMAP?
将位数组转换为 HBITMAP 后 bmBits 的 NULL 指针