C# Marshal/Pinvoke CBitmap?

标签 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# 中显示的内容?

非常感谢。

最佳答案

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

关于C# Marshal/Pinvoke CBitmap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1727015/

相关文章:

c++ - 如何在考虑标点符号的同时在文件中查找字符串?

c++ - 从 cin 获取方向键

c# - PInvoke 在类定义中不起作用

c# - 如何在 C# 中最小化/恢复窗口

C#如何解析XML文件

C# sql like 语句不起作用

c# - 在 DevExpress GridView 上更改行颜色

c# - OptionalAttribute 参数的默认值?

c++ - 为什么内联模板特化有帮助,我应该这样做吗?

c# - 具有 P/Invoke 和指针的泛型