Condividi tramite


Antialiasing 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 Grafica . Per impostare il livello di qualità, chiamare il metodo Graphics::SetTextRenderingHint di un Graphics oggetto. 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à sui monitor LCD a colori che dispongono di un'interfaccia digitale, ad esempio i monitor nei portatili e nei display 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 tablet PC, dove lo schermo può essere orientato in qualsiasi direzione, o se si utilizza uno schermo che può essere ruotato da orizzontale a verticale.

Nell'esempio seguente viene disegnato 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.

schermata di una stringa i cui caratteri hanno bordi frastagliati in contrasto con uno con bordi smussati