Applicazione di antialias al testo

In GDI+ sono disponibili vari livelli di qualità per la creazione di testo. Generalmente il rendering a qualità elevata richiede tempi di elaborazione maggiori di quello a bassa qualità. Per impostare il livello di qualità del testo impostare la proprietà TextRenderingHint di un oggetto Graphics su uno degli elementi dell'enumerazione TextRenderingHint.

In GDI+ sono disponibili un antialias tradizionale e un nuovo tipo di antialias, basato sulla tecnologia di visualizzazione Microsoft® ClearType®. Disponibile solo su Microsoft® Windows® XP, la smussatura di ClearType migliora la leggibilità su monitor LCD a colori con interfaccia digitale, quali monitor di computer portatili e monitor piatti ad alta qualità per computer desktop. Anche la leggibilità sugli schermi CRT viene leggermente migliorata.

ClearType dipende dall'orientamento e dall'ordinamento delle strisce LCD. Attualmente ClearType è implementato solo per le strisce verticali con ordinamento RGB. Questo può rappresentare un problema in caso di utilizzo di un PC palmare, il cui monitor può essere orientato in qualsiasi direzione, o in caso di utilizzo di uno schermo che possa passare dall'orientamento orizzontale a quello verticale.

Nell'esempio che segue viene creato testo con due diverse impostazioni di qualità:

Dim fontFamily As New FontFamily("Times New Roman")
Dim font As New Font( _
   fontFamily, _
   32, _
   FontStyle.Regular, _
   GraphicsUnit.Pixel)
Dim solidBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim string1 As String = "SingleBitPerPixel"
Dim string2 As String = "AntiAlias"

e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel
e.Graphics.DrawString(string1, font, solidBrush, New PointF(10, 10))

e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias
e.Graphics.DrawString(string2, font, solidBrush, New PointF(10, 60))
[C#]
FontFamily  fontFamily = new FontFamily("Times New Roman");
Font font = new Font( 
   fontFamily,
   32, 
   FontStyle.Regular,
   GraphicsUnit.Pixel);
SolidBrush  solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
string string1 = "SingleBitPerPixel";
string string2 = "AntiAlias";

e.Graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
e.Graphics.DrawString(string1, font, solidBrush, new PointF(10, 10));

e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
e.Graphics.DrawString(string2, font, solidBrush, new PointF(10, 60));

Nell'illustrazione che segue si mostra l'output del codice precedente.