树莓派mono上跨平台运行一个C#自制的简易图片处理器

时间:2024-04-04 19:48:38

好奇mono到底能神奇到啥程度,决定在windows下开发一个C#小程序在树莓派上跑跑看。

具体环境:Windows 10 LTSC版 + VS2017专业版,Framework 4.5.2,普通winform。具体开发过程不是本文重点,略过,反正算法N年前都贴过,重新捡起来组装下而已。

树莓派:sudo apt-get install mono-complete

这里有个小插曲,发现最近在sudo apt-get update和upgrade之后,会发生桌面环境下文件管理器闪退的问题。解决起来倒不难(就是可能下载慢):额外再运行 sudo apt full-upgrade即可,重启后解决。

最终效果:

1、Windows下:

树莓派mono上跨平台运行一个C#自制的简易图片处理器为了测试字体的有效性,特地用华文琥珀做了个略显浮夸的标签。其它主要使用微软雅黑。

树莓派下运行的效果图:

树莓派mono上跨平台运行一个C#自制的简易图片处理器

树莓派表示情绪稳定,单图处理速度还可以,并且字体有效。当然字体方面做了一些前期准备:

1、树莓派下mkdir /usr/share/fonts/msfonts
2、windows的fonts下找出msyh*.ttc和STHUPO.TTF,拷到树莓派刚建的msfonts下。
3、树莓派下cd /usr/share/fonts/msfonts
4、sudo mkfontscale即可。

但仍是有坑:

0、当然是大小写敏感,以及文件路径分隔符正斜杠还是反斜杠。打开文件对话框里预设*.jpg,显然找不到后缀是JPG的。总算理解了为啥别的软件要设一个*.*。

1、布局。windows下控件dock即便是none,不使用代码干预的情况下一个个挨个排运行起来能跟预想的一样,但mono里可能会不按预期布局,需要代码里精确控制。

2、GDI+支持。上文贴图里存在一个奇怪的问题。当选择框从右下开始到左上停止的时候,Windows里一切都是符合预期的,但在mono里,虽然界面上看不出问题,但同样的代码下,初始坐标莫名变成了(0,0)。另外,mono下读取EXIF信息没有问题,但是写入Bitmap会报错:Property not supported [GDI+ status: PropertyNotsupported]。目前暂时只能说这个小破软件存JPEG图片会丢EXIF。

3、目录中存在大量图片文件时,因为树莓派打开文件的对话框,无论哪个模式,死活都要显示预览图,因此可能会很卡。

暂时先这样吧。