Lignes

Une ligne est un ensemble de pixels mis en surbrillance sur un affichage raster (ou un ensemble de points sur une page imprimée) identifiés par deux points : un point de départ et un point de fin. Le pixel situé au point de départ est toujours inclus dans la ligne, et le pixel situé au point de fin est toujours exclu. (Ce type de ligne est parfois appelé inclusif-exclusif.)

Lorsqu’une application appelle l’une des fonctions de dessin de traits, l’interface de périphérique graphique (GDI) ou, dans certains cas, un pilote de périphérique, détermine quels pixels doivent être mis en surbrillance. GDI est une bibliothèque de liens dynamiques (DLL) qui traite les appels de fonction graphique à partir d’une application et les transmet à un pilote de périphérique. Un pilote de périphérique est une DLL qui reçoit l’entrée de GDI, convertit l’entrée en commandes d’appareil et transmet ces commandes à l’appareil approprié. GDI utilise un analyseur différentiel numérique (DDA) pour déterminer l’ensemble de pixels qui définissent une ligne. Un DDA détermine l’ensemble de pixels en examinant chaque point sur la ligne et en identifiant les pixels sur la surface d’affichage (ou les points d’une page imprimée) qui correspondent aux points. L’illustration suivante montre une ligne, son point de départ, son point de fin et les pixels mis en surbrillance à l’aide d’un DDA simple.

illustration montrant une grille de pixels, des points de début et de fin, une ligne et un ombrage sur les pixels qui se trouvent le long de la ligne

Le DDA le plus simple et le plus courant est le DDA Bresenham, ou incrémentiel. Une version modifiée de cet algorithme dessine des lignes dans Windows. Le DDA incrémentiel est noté pour sa simplicité, mais il est également noté pour son imprécision. Comme il arrondit à la valeur entière la plus proche, il ne parvient pas parfois à représenter la ligne d’origine demandée par l’application. Le DDA utilisé par GDI ne s’arrondit pas à l’entier le plus proche. Par conséquent, ce nouveau DDA produit une sortie parfois beaucoup plus proche de la ligne d’origine demandée par l’application.

Notes

Si une application nécessite une sortie de ligne qui ne peut pas être obtenue avec le nouveau DDA, elle peut dessiner ses propres lignes en appelant la fonction LineDDA et en fournissant un DDA privé (LineDDAProc). Toutefois, la fonction LineDDA dessine des lignes beaucoup plus lentement que les fonctions de dessin de trait. N’utilisez pas cette fonction au sein d’une application si la vitesse est une préoccupation principale.

 

Une application peut utiliser le nouveau DDA pour dessiner des lignes uniques et plusieurs segments de ligne connectés. Une application peut dessiner une seule ligne en appelant la fonction LineTo . Cette fonction trace une ligne de la position actuelle jusqu’à un point de fin spécifié, mais sans inclure. Une application peut dessiner une série de segments de ligne connectés en appelant la fonction Polyline , en fournissant un tableau de points qui spécifient le point de fin de chaque segment de ligne. Une application peut dessiner plusieurs séries disjointes de segments de ligne connectés en appelant la fonction PolyPolyline , en fournissant les points de terminaison requis.

L’illustration suivante montre la sortie de ligne créée en appelant les fonctions LineTo, Polyline et PolyPolyline .

illustration montrant une ligne droite, une boîte en forme de « l » et deux formes qui apparaissent en trois dimensions