Xlib: Les fonctions de dessin


Les fonctions graphiques :

La Xlib fournit une panoplie assez complète de fonctions de dessin 2D.

Ces fonctions sont en général simples à utiliser :

Les fonctions de dessin :

XDrawPoint(display, drawable, gc, x, y)

Probablement la plus simple des fonctions graphiques. Elle dessine un point à la position (x, y).

XDrawPoints(display, drawable, gc, XPoint *pts, n, mode)

Fonction similaire à la précédente si ce n'est qu'un tableau de n éléments de type XPoint est dessiné.

Le paramètre mode (un int) vaut soit CoordModeOrigin soit CoordModePrevious selon que les coordonnées des points sont relatives à l'origine ou aux coordonnées du dernier point.

XDrawLine(display, drawable, gc, x1, y1, x2, y2)

Dessine une ligne entre (x1, y1) et (x2, y2).

XDrawLines(display, drawable, gc, XPoints *pts, n, mode)

Dessine un ensemble de lignes connectées, en prenant des paires de points dans la liste. Voir la fonction XDrawPoints() pour le paramètre mode.

XDrawRectangle(display, drawable, gc, x, y, width, height)

Dessine un rectangle dont le coin en haut à gauche est en (x, y) et de taille (width, height).

XFillRectangle(display, drawable, gc, x, y, width, height)

Dessine un rectangle plein. L'attribut fill_style du GC spécifie la manière dont on effectue le remplissage (couleur pleine, pattern, etc...)

XFillPolygon(display, drawable, gc, XPoint *pts, n, shape, mode

Semblable a XDrawLines sauf que le polygone dessiné est rempli. Le paramètre shape sert d'aide au serveur pour optimiser le remplissage du polygone.

Les valeurs possibles sont :

XDrawArc(display, drawable, gc, x, y, width, height, angle1, angle2)

Les paramètres x, y, width et height définissent une boîte (Bounding Box) contenant l'arc de cercle. Le centre de l'arc est le centre de la boîte. Les paramètres angle1 et angle2 spécifient la zone du cercle qui sera dessinée. Ces angles sont en 1/64 degrés, mesurés dans le sens trigonométrique. L'angle de valeur zéro est à la position 3 heures. Le paramètre angle2 est mesuré relativement à angle1.

Ainsi, pour dessiner un cercle entier, il faudra positionner width et height égaux au diamètre, et choisir angle1 = 0 et angle2 = 360*64 = 23040.

XFillArc(display, drawable, gc, x, y, width, height, angle1, angle2)

Idem à la fonction précédente sauf que l'arc de cercle est plein.


Les fonctions de tracé de texte seront étudiées ultérieurement.

Les fonctions de tracé de bitmaps également.


Effacement d'une fenêtre :

XClearWindow(display, drawable)

Efface le contenu d'une fenêtre ou d'un Pixmap.


michel.buffa@essi.fr