我们在 linux 和 windows 上使用 mono,我们拥有的一个项目是生成带有渲染文本的位图。
因为位图必须是(每像素位格式),我们必须省略任何我们没有得到任何阴影的抗锯齿,所有字母都是黑白的。
为此,我们使用 TextRenderingHint.SingleBitPerPixelGridFit,它在 windows 上为位图值上的每个像素生成 0 或 255,在 linux 上它以某种方式忽略此设置,我们得到一个从 0 到 255 的像素值。
Windows中生成的位图:设置工作
好的位图:(http://shrani.si/f/2p/Mg/9JkctiS/408b7606-b74e-46cc-a5d9-.png)(对不起,我不允许张贴图片:)
在 linux 中生成的位图:设置被忽略了?!?(它有它不应该有的阴影!)不OK 位图:(http://shrani.si/f/3a/ye/1Sn9rQjM/e75ab589-2061-421b-9275-.png)
位图是通过以下方式生成的:
b = new Bitmap(_width, _height, PixelFormat.Format16bppRgb555);
g = Graphics.FromImage(b);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None;
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
区别很明显...
知道如何解决这个问题吗?这是某种系统设置还是什么?