C#Marshal / Pinvoke CBitmap?

时间:2009-11-13 03:47:31

标签: c# c++ pinvoke

我无法弄清楚如何将C ++ CBitmap编组为C#Bitmap或Image类。

我的导入如下:

[DllImport(@“test.dll”,CharSet = CharSet.Unicode)]         public static extern IntPtr GetBitmap(System.IntPtr hwnd,int nBMPWIDTH,int nBMPHEIGHT);

H文件部分如下所示:

Cbitmap * GetBitmap(HWND hwnd,int nBMPWIDTH,int nBMPHEIGHT);

如何将Cbitmap转换为可在C#中显示的内容?

非常感谢。

1 个答案:

答案 0 :(得分:1)

.NET Framework中最接近的API是Image.FromHbitmap,但这需要您从CBitmap中提取HBITMAP,而这在C#中无法做到(至少在不知道CBitmap的内部结构的情况下)。如果您可以修改C ​​++ GetBitmap函数以返回HBITMAP而不是CBitmap包装器,那么这将是最简单的解决方案。这是你的选择吗?