Anticrénelage avec des lignes et des courbes

Lorsque vous utilisez Windows GDI+ pour dessiner une ligne, vous fournissez le point de départ et le point de fin de la ligne, mais vous n’avez pas à fournir d’informations sur les pixels individuels sur la ligne. GDI+ fonctionne conjointement avec le logiciel du pilote d’affichage pour déterminer quels pixels seront activés pour afficher la ligne sur un périphérique d’affichage particulier.

Considérez une ligne rouge droite qui va du point (4, 2) au point (16, 10). Supposons que le système de coordonnées a son origine dans l’angle supérieur gauche et que l’unité de mesure est le pixel. Supposons également que l’axe x pointe vers la droite et que l’axe y pointe vers le bas. L’illustration suivante montre une vue agrandie de la ligne rouge dessinée sur un arrière-plan multicolore.

illustration montrant des pixels rouges pleins sur un arrière-plan multicolore

Notez que les pixels rouges utilisés pour restituer la ligne sont opaques. Aucun pixel partiellement transparent n’est impliqué dans l’affichage de la ligne. Ce type de rendu de ligne donne à la ligne un aspect déchiqueté, et la ligne ressemble un peu à un escalier. Cette technique de représentation d’une ligne avec un escalier est appelée aliasing ; l’escalier est un alias pour la ligne théorique.

Une technique plus sophistiquée pour le rendu d’une ligne implique l’utilisation de pixels partiellement transparents avec des pixels rouges purs. Les pixels sont définis sur le rouge pur ou sur un mélange de rouge et de couleur d’arrière-plan en fonction de la proximité de la ligne. Ce type de rendu est appelé anticrénelage et aboutit à une ligne que l’œil humain perçoit comme plus lisse. L’illustration suivante montre comment certains pixels sont fusionnés avec l’arrière-plan pour produire une ligne anticrénelée.

illustration montrant des pixels qui sont des nuances de rouge sur le même arrière-plan

L’anticrénelage (lissage) peut également être appliqué aux courbes. L’illustration suivante montre une vue agrandie d’une ellipse lissée.

illustration d’une ellipse composée de différentes nuances de pixels bleus sur un arrière-plan blanc

L’illustration suivante montre la même ellipse dans sa taille réelle, une fois sans anticrénelure et une fois avec anticrénelure.

capture d’écran de deux ellipses : celle avec un anticrénelage semble nettement plus lisse

Pour dessiner des lignes et des courbes qui utilisent l’anticrénelage, créez un objet Graphics et passez SmoothingModeAntiAlias à sa méthode Graphics::SetSmoothingMode . Appelez ensuite l’une des méthodes de dessin de ce même objet Graphics .

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

SmoothingModeAntiAlias est un élément de l’énumération SmoothingMode .