Condividi tramite


Anti-aliasing con linee e curve

Quando si usa Windows GDI+ per disegnare una linea, si specifica il punto iniziale e il punto finale della riga, ma non è necessario fornire informazioni sui singoli pixel sulla linea. GDI+ funziona insieme al software del driver di visualizzazione per determinare quali pixel verranno attivati per visualizzare la linea in un particolare dispositivo di visualizzazione.

Si consideri una linea rossa dritta che va dal punto (4, 2) al punto (16, 10). Si supponga che il sistema di coordinate abbia la sua origine nell'angolo superiore sinistro e che l'unità di misura sia il pixel. Si supponga inoltre che l'asse x punti a destra e che l'asse y punti verso il basso. La figura seguente mostra una vista ingrandita della linea rossa disegnata su uno sfondo multicolore.

figura che mostra pixel rossi solidi su uno sfondo multicolore

Si noti che i pixel rossi usati per eseguire il rendering della linea sono opachi. Non ci sono pixel parzialmente trasparenti coinvolti nella visualizzazione della riga. Questo tipo di rendering linea dà alla linea un aspetto frastagliato e la linea sembra un po'come una scala. Questa tecnica di rappresentazione di una linea con una scala è denominata aliasing; la scala è un alias per la linea teorica.

Una tecnica più sofisticata per il rendering di una linea prevede l'uso di pixel parzialmente trasparenti insieme ai pixel rossi pure. I pixel sono impostati su rosso puro o su una miscela di rosso e il colore di sfondo a seconda della chiusura della linea. Questo tipo di rendering è chiamato antialiasing e genera una linea che l'occhio umano percepisce come più uniforme. Nella figura seguente viene illustrato il modo in cui alcuni pixel vengono mescolati con lo sfondo per produrre una linea antialiased.

figura che mostra i pixel che sono sfumature di rosso sullo stesso sfondo

L'antialiasing (smoothing) può essere applicato anche alle curve. La figura seguente mostra una visualizzazione ingrandita di un'ellisse liscia.

illustrazione di un'ellisse costituita da diverse sfumature di pixel blu su uno sfondo bianco

La figura seguente mostra gli stessi puntini di sospensione nella sua dimensione effettiva, una volta senza antialiasing e una volta con antialiasing.

schermata di due puntini di sospensione: quella con antialiasing appare noticamente più uniforme

Per disegnare linee e curve che usano antialiasing, creare un oggetto Graphics e passare SmoothingModeAntiAlias al relativo metodo Graphics::SetSmoothingMode . Chiamare quindi uno dei metodi di disegno dello stesso oggetto Graphics .

myGraphics.SetSmoothingMode(SmoothingModeAntiAlias);
myGraphics.DrawLine(&myPen, 0, 0, 12, 8);

SmoothingModeAntiAlias è un elemento dell'enumerazione SmoothingMode .