2

Linux と Windows で mono を使用しています。レンダリングされたテキストでビットマップを生成するプロジェクトの 1 つです。

ビットマップは (ビット/ピクセル形式) である必要があるため、シェーディングを取得しないアンチエイリアスを省略し、すべての文字を完全に白黒にする必要があります。

このために、TextRenderingHint.SingleBitPerPixelGridFit を使用します。これは、Windows ではビットマップの各ピクセルに対して 0 または 255 のいずれかを生成し、Linux ではこの設定を何らかの形で無視し、0 から 255 までのピクセル値を取得します。

Windowsで生成されたビットマップ:設定が機能している

OK BITMAP : ( http://shrani.si/f/2p/Mg/9JkctiS/408b7606-b74e-46cc-a5d9-.png ) (申し訳ありませんが、写真の投稿は許可されていません :)

Linux で生成されたビットマップ: 設定がなぜか無視された?!? (あってはならない色合いがあります!) NOT OK BITMAP: ( 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 に答える