我想使用mono命令将一个.NET应用程序运行到我的Linux PC中。
mono application.exe
我获得了一些成功并获得了与在Windows上运行相同的GUI。所以我很高兴在我的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是来自硬件的数据缓冲区,大约是6 MB RGB数据。
是否有人知道为什么上述功能无法在Linux平台上使用单声道实用程序?
另外,如果还有其他方法可以使用Windows中的其他库来显示图像,请使用单帧来支持Linux平台显示图像。
还有一个问题是我如何刷新由mono命令运行的windonw?因为无论何时我使用单声道实用程序运行.NET二进制文件,然后最小化或最大化窗口,那么与Windows相比,它无法最小化或最大化。
如何使用mono?
刷新linux中的窗口答案 0 :(得分:1)
问题不在于Mono和Bitmap类。
问题在于您的图像数据来自:您提到它来自USB设备。但是如何从.NET代码访问您的设备?好像你正在使用IntPtr,这让我认为你正在使用P/Invoke。
P / Invoke本质上是一种非跨平台的技术。如果您希望程序在没有特定平台代码的平台(Linux和Windows)上工作,则应该坚持托管代码。
更新:您提到您有一个“.so”库来访问Linux上的平台特定功能。那么这可能是不起作用的一点。你应该在stackoverflow上发布一个全新的问题,用你正在使用的代码来调用Linux中的那个库。