Condividi tramite


Antialiasing delle linee e curve

Quando si usa GDI+ per disegnare una linea, si specifica il punto iniziale e il punto finale della linea, ma non è necessario 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.

aliasing

Si consideri la 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.

Linea, nessun antialiasing

I pixel rossi utilizzati per il rendering della linea sono opachi. Nella linea non sono presenti pixel parzialmente trasparenti. Questo tipo di rendering della linea dà alla linea un aspetto irregolare e la linea assomiglia 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.

Antialiasing

Una tecnica più sofisticata per il rendering di una linea prevede l'uso di pixel parzialmente trasparenti insieme a pixel opachi. I pixel sono impostati sul rosso puro o su una certa miscela di rosso e 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.

Antialiasing di una linea

L'antialiasing, detto anche smussamento, può essere applicato anche alle curve. La figura seguente mostra una visualizzazione ingrandita di un'ellisse smussata.

Antialiasing curve

La figura seguente mostra la stessa ellisse nella sua dimensione effettiva, una volta senza antialiasing e una volta con antialiasing.

esempio di anti-aliasing

Per disegnare linee e curve che utilizzano l'antialiasing, creare un'istanza della classe Graphics e impostarne la proprietà SmoothingMode su AntiAlias o HighQuality. Quindi, chiama uno dei metodi di disegno della stessa classe Graphics.

myGraphics.SmoothingMode = SmoothingMode.AntiAlias;
myGraphics.DrawLine(myPen, 0, 0, 12, 8);
myGraphics.SmoothingMode = SmoothingMode.AntiAlias
myGraphics.DrawLine(myPen, 0, 0, 12, 8)

Vedere anche