Antialiasing delle linee e curve
Quando usi Windows GDI+ per disegnare una linea, fornisci il punto iniziale e il punto finale della linea, ma non devi fornire informazioni sui singoli pixel sulla linea. GDI+ funziona in combinazione con il software del driver di visualizzazione per determinare quali pixel verranno attivati per visualizzare la linea in un determinato dispositivo di visualizzazione.
Si consideri una linea rossa retta che va dal punto (4, 2) al punto (16, 10). Si supponga che il sistema di coordinate abbia l'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 visualizzazione ingrandita della linea rossa disegnata su uno sfondo colorato.
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 linea. Questo tipo di rendering delle linee dà alla linea un aspetto irregolare, e la linea somiglia un po' a una scala. Questa tecnica di rappresentazione di una linea con una scala è detta 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 a pixel rossi puri. I pixel sono impostati su rosso puro o su una miscela di rosso e il colore di sfondo a seconda della loro vicinanza alla linea. Questo tipo di rendering è detto antialiasing e produce una linea che l'occhio umano percepisce come più liscia. La figura seguente mostra come alcuni pixel vengono mescolati con lo sfondo per produrre una linea antialiased.
L'antialiasing (smussamento) può essere applicato anche alle curve. La figura seguente mostra una visualizzazione ingrandita di un'ellisse smussata.
La figura seguente mostra la stessa ellisse nella sua dimensione effettiva, una volta senza antialiasing e una volta con antialiasing.
Per disegnare linee e curve che utilizzano l'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.