Comment définir la couleur de fond d'un rectangle ?

 Fonction rectangle();

La fonction void rectangle(int left, int top, int right, int bottom); permet uniquement de tracer les bords d'un rectangle. On ne peut donc formater que la bordure du rectangle et non pas sa couleur de fond. Ainsi l'appel de la fonction setfillstyle(); est inutile. Le rectangle dessiné est "transparent"; sa couleur de fond est donc la couleur de fond de la fenêtre, définie par setbkcolor();. Par exemple, pour tracer un rectangle avec un bord bleu en pointillé de largeur 3 pixels :

setcolor(BLUE);
setlinestyle(1,0,3);
rectangle(100,100,400,200);            // rectangle avec un bord bleu en pointillé de largeur 3 pixels

De manière équivalente, la fonction circle(); ne permet de tracer que le périmètre d'un cercle et non pas de dessiner un disque rempli.

Fonction fillpoly();

Pour dessiner un rectangle avec une couleur de fond spécifique, il faut utiliser la fonction void fillpoly(int nbre_points, int  *polygone);. Cette fonction permet de remplir un polygone (c'est-à-dire, toute forme géométrique fermée) avec les paramètres passés préalablement à la fonction setfillstyle();. Contrairement à la fonction rectangle(); pour laquelle les coordonnées du rectangle sont passées en paramètres (left, top, right, bottom), dans le cas de la fonction fillpoly(); il faut stocker les coordonnées (xi,yi) de chaque coin du rectangle (ou plus globalement, du polygone) dans un tableau d'entiers. Dans le cas d'un rectangle, il y a 4 sommets donc le tableau possèdera 8 valeurs {x1,y1,x2,y2,x3,y3,x4,y4}. Voici le programme pour tracer le même rectangle que précédemment mais avec un fond jaune :

int monrectangle[8]={100,100,400,100,400,200,100,200};
setcolor(BLUE);
setlinestyle(1,0,3);
setfillstyle(1,YELLOW);
fillpoly(4,monrectangle);

A noter que pour remplir un disque avec une couleur de fond donnée, il faut utiliser la fonction void fillellipse(int x, int y, int xradius, int yradius);.