在windows和mono-linux平台上显示RGB图像

本文关键字:显示 RGB 图像 平台 windows mono-linux | 更新日期: 2023-09-27 18:27:30

我想使用mono命令在Linux PC上运行一个.NET应用程序。

mono application.exe 

我获得了一些小的成功,并收到了GUI,这和在windows上运行是一样的。所以我很高兴在我的Linux平台上看到GUI。

然后,我想在窗口中显示一个图像,这些图像在windows平台上完美地显示。

但是当我尝试在我的Linux平台上使用mono命令运行相同的.net应用程序时,我无法成功地显示在windows平台上显示的图像。

请参阅以下代码参考以在windows平台中显示图像。

byte[] data_rgb;
data_rgb = new Byte[HEIGHT * WIDTH * 3];
public const int HEIGHT = 1944;
public const int WIDTH = 2592;
fixed (byte* bPtr = data_rgb)
{
    IntPtr pSrc = (IntPtr)bPtr;
    bmp = new Bitmap(WIDTH, HEIGHT, STRIDE, PixelFormat.Format24bppRgb, pSrc);
}

data_rgb是来自硬件的数据缓冲区,大约是6MB的rgb数据。

有人知道为什么以上功能不能在使用mono实用程序的Linux平台上运行吗?

此外,请让我知道是否有其他方法可以在windows中使用其他库来显示图像,这些方法可以在Linux平台中使用单帧来显示图像。

还有一个问题是,我如何刷新由mono命令运行的windonw?因为每当我使用mono实用程序运行.NET二进制文件,然后最小化或最大化窗口时,与窗口相比,它就无法正确地最小化或最大。

如何在linux中使用mono刷新窗口?

在windows和mono-linux平台上显示RGB图像

问题不在于Mono和Bitmap类。

问题是你的图像数据来自哪里:你提到它来自USB设备。但是,如何从.NET代码访问设备呢?看起来你在使用IntPtr,这让我认为你在使用P/Invoke。

p/Invoke本质上是一种非跨平台的技术。如果您希望您的程序在没有特定平台代码的情况下跨平台(Linux和Windows)工作,则应坚持使用托管代码

更新:您提到您有一个".so"库来访问Linux上特定于平台的功能。那么这可能是不起作用的部分。您应该在stackoverflow上发布一个全新的问题,其中包含您在Linux中用于P/Invoke该库的代码。