在C#和C ++之间传输图像数据

时间:2009-02-20 13:02:05

标签: c# image pixel windows

我正在开发一个项目,我将在C#windows应用程序中创建用户界面。它需要显示图片。我想将图片数据传输到C ++模块,该模块将对其进行编辑,然后返回结果。

我已经建立了如何在C#和C ++之间传输数据(我使用的是C ++ DLL)。我的问题是:C#中的哪个类可以做我想要的?我需要它将图像数据导出到某种像素矩阵(最好是具有单独的RGB值,每个像素大小为1字节=每个像素3个字节),我可以在C ++模块中使用它。此外,它需要能够将结果导回到对象中,并显示在C#windows应用程序窗口中。

哪些课程可能最适合我?

谢谢,Malki。

4 个答案:

答案 0 :(得分:3)

如果您想在描述时使用像素数据,那么Bitmap.LockBits就是您的方法。

答案 1 :(得分:0)

你的dll方法对输入参数的期望是什么?

编辑:据我所知,在c#中你需要进入“不安全模式”才能直接使用像素(并快速:))。类似于this

答案 2 :(得分:0)

除了danbystrom关于Bitmap.LockBits的答案,你还需要查看Marshal类来复制二进制数据。检查Marshal.Copy方法以获取示例。

答案 3 :(得分:0)

回答你们所有人! : - )

不,您不需要任何编组,如果您只想将像素传递给本机C ++,则不需要任何不安全的代码。

你可以查看这篇帖子,我是完全这个,调用包含手工制作的汇编语言的C ++函数来进行一些图像处理:

http://danbystrom.se/2008/12/22/optimizing-away-ii/