2009-04-08 8 views
0

Ich habe eine Anforderung, eine Bitmap zu generieren, die einige Zeichen enthält, die ohne Anti-Aliasing oder ClearType gerendert werden.Generieren nicht anti-aliased Schriftarten mit WinForms

In Win32-Land hätte ich eine Schrift mit lfQuality auf NONANTIALIASED_QUALITY gesetzt und damit gezeichnet.

Ich habe versucht, dies mit WinForms in der folgenden Art und Weise zu tun:

using(Font smoothFont = new Font("Arial", 30, GraphicsUnit.Pixel)) 
    { 
    LOGFONT lf = new LOGFONT(); 
    smoothFontToLogFont(lf); 
    lf.lfQuality = NONANTIALIASED_QUALITY; 
    using (Font roughFont = Font.FromLogFont(lf)) 
    { 

Aber roughFont scheint noch ClearTyped Text zu machen.

Sollte ich mit WinForms aufgeben und nur in C tun, oder fehlt mir hier etwas? (Meine LOGFONT-Klasse und die zugehörigen lfQuality-Defs stammen direkt aus der Framework-Quelle. Daher bin ich froh, dass sie korrekt sind.)

Antwort

1

Es stellte sich heraus, dass ich an der falschen Stelle gesucht habe und die Schriftart GDI + auf diese Weise nicht ändern kann. stattdessen müssen Sie die TextRenderingHint Eigenschaft festlegen auf dem Grafik-Objekt, wie folgt aus:

gr.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit 
+0

Danke! Diese Lösung hat mir eine Menge Ärger erspart. Meine bisher super-fuzzy Fonts sehen jetzt toll aus :) – ChandlerPelhams

0

ich weiß, es geht nicht darum, Bitmap, aber ich war auf der Suche nach Lösungen für mein Problem und kam mit dieser LabelEx Modifikation

using System.Drawing; 
using System.Drawing.Text; 

class LabelEx : System.Windows.Forms.Label 
{ 
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) 
    { 
     e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixelGridFit; 
     base.OnPaint(e); 
    } 
} 

vielleicht findet jemand i t nützlich

Verwandte Themen