Source / Exemple :
// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 18-06-2002 par cmarsc
// EFFETS D'AFFICHAGES MODE GRAPHIQUE
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define FOND_ECRAN BLACK
int initialiser_mode_graphique (void);
void entree_clavier (void);
void box(int x1, int y1,int x2, int y2, int coul_fond,int coul_bord);
void message (int x1, int y1, int coul_texte,char *texte, int taille_texte);
void effet_cadre1 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre2 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre3 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre4 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre5 (int x1, int y1,int x2, int y2, int couleur);
int main(void)
{
initialiser_mode_graphique();
// cadre vert haut
// x1 = 1 y1 = 1 x2 = max y2 = 30 coul_fond rouge coul_bord violet
box(1,1, getmaxx(), 30, 1 , LIGHTBLUE);
// x1 = 10 y1 = 3 coul_fond = vert texte taille_texte = 7
message(10,3, LIGHTCYAN, "ENTREZ UN CHIFFRE ENTRE 1 ET 5", 7);
message(505,3, LIGHTRED, "ESC QUITTER", 7);
// grand cadre noir avec un bord violet
box(1,35, getmaxx(), getmaxy(), FOND_ECRAN,LIGHTBLUE);
entree_clavier();
return 0;
}
int initialiser_mode_graphique(void) {
// detection automatique du mode video
int gdriver = DETECT, gmode, errorcode;
// initialiser le mode graphique
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
errorcode = graphresult();
// tester si une erreur se produit
if (errorcode != grOk)
{
printf("ERREUR : %s\n", grapherrormsg(errorcode));
printf("Appuyez sur une touche :");
getch();
exit(1);
}
return 0;
} // fin de la fonction initialiser_mode_graphique
void box(int x1, int y1,int x2, int y2, int coul_fond,int coul_bord) {
int i1;
// rectangle en couleur
setfillstyle(SOLID_FILL,coul_fond);
bar (x1, y1, x2, y2);
setcolor(coul_bord);
// dessiner un rectangle avec un effet de relief 3
for (i1 = 0; i1 < 3; i1++) {
rectangle (x1+i1, y1+i1, x2-i1 , y2-i1);
}
setcolor(WHITE);
// cadre blanc
rectangle (x1+1, y1+1, x2-1, y2-1);
return ;
} // fin de la fonction box
void message(int x1, int y1, int coul_texte, char *texte, int taille_texte) {
// afficher un message avec differentes tailles
// de caracteres
int i;
settextstyle(SMALL_FONT, HORIZ_DIR,taille_texte);
// faire un effet d'ombre
setcolor(BLACK);
for (i = 0; i< 4;i++) {
outtextxy(x1+ 1, y1 + i, texte);
}
// texte en avant plan
setcolor(coul_texte);
outtextxy(x1,y1, texte);
return ;
}
void entree_clavier(void) {
char votre_choix;
while(1) { // TAPER ESC POUR SORTIR
votre_choix = getch();
switch (votre_choix) {
case '1':
// x1 = 50 y1 = 45 x2 = 600 y2 = 450 couleur = vert
effet_cadre1(50, 45,600, 450, CYAN);
sleep(1); // effacer avec le meme effet
effet_cadre1(50, 45,600, 450, FOND_ECRAN);
break;
case '2':
// x1 = 10 y1 =105 x2 = 500 y2 = 450 couleur = rouge vif
effet_cadre2(10,105,500,450, LIGHTRED);
sleep(1); // effacer avec le meme effet
effet_cadre2(10,105,500,450, FOND_ECRAN);
break;
case '3':
// x1 = 105 y1 = 75 x2 = 500 y2 = 450 couleur = vert
effet_cadre3(105, 75, 500, 450, GREEN);
sleep(1); // effacer avec le meme effet
effet_cadre3(105, 75, 500, 450, FOND_ECRAN);
break;
case '4':
// x1 = 150 y1 = 45 x2 = 600 y2 = 400 couleur = jaune
effet_cadre4(150,145, 600, 400, YELLOW);
sleep(1); // effacer avec le meme effet
effet_cadre4(150,145, 600, 400, FOND_ECRAN);
break;
case '5':
// x1 = 15 y1 = 45 x2 = 630 y2 = 450 couleur = violet
effet_cadre5(15, 45, 630, 450, LIGHTBLUE);
sleep(1); // effacer avec le meme effet
effet_cadre5(15, 45, 630, 450, FOND_ECRAN);
break;
case 27: // fin du programme
closegraph(); // fin mode graphique
exit(0);
break;
default:
break;
} // fin de switch
} // fin de while(1)
// return ;
} // fin de la fonction entree_clavier
void effet_cadre1(int x1, int y1,int x2, int y2, int couleur) {
// afficher du haut en bas
int i1;
setcolor(couleur);
for (i1 = 0; (y1 + i1) <= y2; i1++) {
rectangle (x1, y1, x2, y1 + i1);
}
return ;
} // fin de la fonction effet_cadre1
void effet_cadre2(int x1, int y1,int x2, int y2, int couleur) {
// afficher de bas en haut
int i1;
setcolor(couleur);
for (i1 = 0; (y2 - i1) >= y1; i1++ ) {
rectangle (x1, y2 - i1, x2, y2);
}
return ;
} // fin de la fonction effet_cadre2
void effet_cadre3(int x1, int y1,int x2, int y2, int couleur) {
// afficher de gauche vers la droite
int i1;
setcolor(couleur);
for (i1 = 0; (x1 + i1) <= x2; i1++) {
rectangle (x1, y1, x1+i1, y2);
}
return ;
} // fin de la fonction effet_cadre3
void effet_cadre4(int x1, int y1,int x2, int y2, int couleur) {
// afficher de la droite vers la gauche
int i1;
setcolor(couleur);
for (i1 = 0; (x2 - i1) >= x1; i1 ++) {
rectangle (x2 - i1, y1, x2, y2);
}
return ;
} // fin de la fonction effet_cadre4
void effet_cadre5(int x1, int y1,int x2, int y2, int couleur) {
// afficher du milieu vers les cotes
int i1, i2;
float milieu_x,milieu_y;
// calculer le centre de la figure
milieu_x = x1 + ((x2 - x1) / 2);
milieu_y = y1 + ((y2 - y1) / 2);
setcolor(couleur);
for (i1 = 0, i2 = 0; (milieu_y+i1 >= y1) && (milieu_x -i2 >= x1); ) {
if (milieu_y -i1 >= y1) i1 ++;
if (milieu_x -i2 >= x1) i2 ++;
rectangle (milieu_x-i2, milieu_y -i1, milieu_x + i2 , milieu_y+i1);
}
return ;
} // fin de la fonction effet_cadre5
Conclusion :
// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 18-06-2002 par cmarsc
// EFFETS D'AFFICHAGES MODE GRAPHIQUE
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.