2

我们在 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;

区别很明显...

知道如何解决这个问题吗?这是某种系统设置还是什么?

4

1 回答 1

1

我有同样的问题。我找不到在没有抗锯齿的情况下设置单色打印的方法。但我找到了解决系统级别任务的方法。如果需要,您可以仅为选定的字体和大小自定义设置。使用抗锯齿设置编辑现有文件或创建新文件。 /etc/fonts/conf.d/10-antialias.conf 将抗锯齿设置为 false。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!--  Use the Antialiasing -->
  <match target="font">
    <edit name="antialias" mode="assign"><bool>false</bool></edit>
  </match>
</fontconfig>
于 2015-09-02T13:05:37.447 回答