1

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

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

有什么想法可能最适合我吗?

谢谢,马尔基。

4

4 回答 4

3

如果您想按照您的描述使用像素数据,那么 Bitmap.LockBits 是适合您的方法。

于 2009-02-20T13:04:46.927 回答
0

为大家解答!:-)

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

你可以查看这篇文章,如果我正是这样做的,调用包含手工汇编语言的 C++ 函数来进行一些图像处理:

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

于 2009-02-20T14:04:33.757 回答
0

您的 dll 方法期望作为输入参数是什么?

编辑:据我所知,在 c# 中,您需要进入“不安全模式”才能直接使用像素(并且快速:))。像这样的东西。

于 2009-02-20T13:06:57.403 回答
0

除了 danbystrom 关于 Bitmap.LockBits 的回答之外,您还需要查看用于复制二进制数据的 Marshal 类。以 Marshal.Copy 方法为例。

于 2009-02-20T13:10:48.797 回答