我不知道如何将 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# 中显示的内容?
非常感谢。
最佳答案
.NET Framework 中最接近的 API 是 Image.FromHbitmap,但这需要您从 CBitmap 中提取 HBITMAP,而这在 C# 中是做不到的(至少在不了解 CBitmap 内部结构的情况下做不到)。如果您可以修改 C++ GetBitmap 函数以返回 HBITMAP 而不是 CBitmap 包装器,那将是最简单的解决方案。这是您的选择吗?
关于C# Marshal/Pinvoke CBitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727015/