Condividi tramite


Anti-aliasing con testo

Windows GDI+ offre vari livelli di qualità per il disegno del testo. In genere, il rendering di qualità superiore richiede più tempo di elaborazione rispetto al rendering di qualità inferiore.

Il livello di qualità è una proprietà della classe Graphics . Per impostare il livello di qualità, chiamare il metodo Graphics::SetTextRenderingHint di un oggetto Graphics . Il metodo Graphics::SetTextRenderingHint riceve uno degli elementi dell'enumerazione TextRenderingHint , dichiarata in Gdiplusenums.h.

GDI+ offre un antialiasing tradizionale e un nuovo tipo di antialiasing basato sulla tecnologia di visualizzazione Microsoft ClearType disponibile solo in Windows XP e Windows Server 2003 e versioni successive di Windows. ClearType smoothing migliora la leggibilità nei monitor LCD a colori con un'interfaccia digitale, ad esempio i monitor nei portatili e negli schermi desktop flat di alta qualità. Anche la leggibilità nelle schermate CRT è migliorata.

ClearType dipende dall'orientamento e dall'ordinamento delle strisce LCD. Attualmente ClearType è implementato solo per le strisce verticali ordinate RGB. Questo potrebbe essere un problema se si usa un PC tablet, dove lo schermo può essere orientato in qualsiasi direzione, o se si usa uno schermo che può essere trasformato da orizzontale a verticale.

L'esempio seguente disegna testo con due impostazioni di qualità diverse:

FontFamily  fontFamily(L"Times New Roman");
Font        font(&fontFamily, 32, FontStyleRegular, UnitPixel);
SolidBrush  solidBrush(Color(255, 0, 0, 255));
WCHAR       string1[] = L"SingleBitPerPixel";
WCHAR       string2[] = L"AntiAlias";

graphics.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel);
graphics.DrawString(string1, -1, &font, PointF(10.0f, 10.0f), &solidBrush);

graphics.SetTextRenderingHint(TextRenderingHintAntiAlias);
graphics.DrawString(string2, -1, &font, PointF(10.0f, 60.0f), &solidBrush);
            

La figura seguente mostra l'output del codice precedente.

screenshot di una stringa i cui caratteri hanno bordi frastagliati contrastati con uno con bordi lisci