gpt4 book ai didi

c# - 如何将 .NET 位图传递给 native DLL?

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:31 25 4
gpt4 key购买 nike

这是我的:

  • 一个外部 DLL,我用 C 编写的。这个 DLL 链接到 opencv。我不想直接从 C# 调用 OpenCV - 已经有大量访问 OpenCV 的 C 代码将在 DLL 中使用。有一个导出函数:passbitmap(void *mem, size_t s);

  • 我想从中调用 DLL 的 C# 项目。

  • 一个 System.Drawing.Bitmap 对象,我想从中以某种方式将像素/位图数据传递到我的 DLL。

我猜它是某种 P/Invoke,但我从来没有这样做过,也不知道在这种情况下我该如何正确地做到这一点。我该如何进行?

最佳答案

您需要调用 Bitmap.GetHbitmap() 来获取位图的 native 句柄。

然后你基本上想做一些 native 互操作并调用 GetDIBits() .让您的目标 dll 实际调用 GetDIBits() 并仅传递 win32 句柄可能比执行互操作更好。

您需要在从 GetDC(NULL) 获得的桌面 DC 上调用 CreateCompatibleDC(),然后在刚创建的 DC 上调用 CreateCompatibleBitmap()。然后调用 GetDIBits()。

关于c# - 如何将 .NET 位图传递给 native DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/661016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com