2012-04-13 20 views
1

Wir verwenden mono auf Linux und auch auf Windows, ein Projekt, das wir haben, besteht darin, Bitmaps mit gerenderten Text zu erzeugen.Mono C# TextRenderingHint.SingleBitPerPixelGridFit Windows vs. Linux

Da Bitmaps in (Bit pro Pixel-Format) sein müssen, wir müssen alle Antialiasing weglassen, dass wir keine Schattierung bekommen, dass alle Buchstaben totaly ein B & W.

Dazu verwenden wir TextRenderingHint.SingleBitPerPixelGridFit die an Fenstern erzeugt für jedes Pixel auf einem Bitmap-Wert entweder 0 oder 255 auf linux diese Einstellung es irgendwie ignoriert und wir für einen Pixelwert von 0 bis 255

Bitmap in Windows erzeugt erhalten: mit Einstellung

OK Arbeits BITMAP: (http://shrani.si/f/2p/Mg/9JkctiS/408b7606-b74e-46cc-a5d9-.png) (Entschuldigung, ich darf nicht p ost picture :)

Bitmap in Linux generiert: Einstellung irgendwie ignoriert?!? (ES HAT SCHATTEN, die es nicht haben sollte!) NICHT OK BITMAP: (http://shrani.si/f/3a/ye/1Sn9rQjM/e75ab589-2061-421b-9275-.png)

Bitmap erzeugt mit:

 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; 

Der Unterschied ist deutlich gezeigt, ...

Jede Idee, wie um das zu lösen? Ist das eine Systemeinstellung oder etwas?

+0

Ich habe Bilder für Sie repariert. Willkommen bei SO! – abatishchev

+0

Sie wurden kaputt und zeigen nicht mehr die Pixelraster an. Zurückgerollt. –

+0

Haben Sie eine Antwort bekommen? Ich habe das gleiche Problem... – frankhommers

Antwort

0

Ich habe das gleiche Problem. Ich finde nicht die Art und Weise, Monodruck ohne Antialiasing einzurichten. Aber ich finde den Weg Task auf Systemebene zu lösen. Sie können die Einstellungen bei Bedarf nur für die ausgewählte Schrift und Größe anpassen. Bearbeiten Sie vorhandene Dateien mit Antializer-Einstellungen oder erstellen Sie neue. /etc/fonts/conf.d/10-antialias.conf Antialiasing auf false setzen.

<?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>