Boutons cadres mode graphique turbo c++

Description

dessiner des boutons cliqués ou pas et des cadres

Source / Exemple :


/*  PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
    ecrit le 18-07-2002 par cmarsc
    BOUTONS CADRES MODE GRAPHIQUE */

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define COUL_ECRAN CYAN
#define COUL_CADRE LIGHTCYAN

void bouton_3D(int x1, int y1, int x2, int y2, int coul,int relief,int clic);
void box(int x1, int y1, int x2, int y2, int coul_box,int coul_fond,int effet);
void bouton_arrondi(int x1, int y1, int x2, int y2, int coul);

enum etats_boutons { NON_CLIQUE, CLIQUE };
enum effets_box { PAS_D_OMBRE,OMBRE };

int main(void)
{
	 int i1,milieu_x,milieu_y;

	 int gdriver = DETECT, gmode, errorcode;
	 initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

 	errorcode = graphresult();
	if (errorcode != grOk)
	{
		printf("Graphics error: %s\n", grapherrormsg(errorcode));
		printf("Press any key to halt:");
		getch();

	  exit(1);
	}
 
   sleep(1);

  settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 4);

  milieu_x = getmaxx()/2;
  // afficher le fond d'ecran
  setfillstyle(1,COUL_ECRAN);

for (i1 = 0; i1 <= milieu_x; i1++) {
 bar ((milieu_x+4)-i1,(getmaxy()-6)-(i1*1.47),(milieu_x-3)+i1,getmaxy()-4);
}

	 // dessiner le grand cadre avec un effet en relief
	 for (i1 = 0; i1 < 3; i1++) {
		 (i1 == 1) ? setcolor(LIGHTGREEN) : setcolor(COUL_CADRE);
		 rectangle (i1,i1,getmaxx()-i1,getmaxy()-i1);
	 }

// x1 = 10 y1 = 10 x2 = 400 y2 = 53  coul = CYAN  relief = 4 clic = 0
	 bouton_3D(10,10,400,53,CYAN,4,NON_CLIQUE);

	 setcolor(LIGHTCYAN);
	 outtextxy(19,10, "BOUTON 3D NON CLIQUE");
	 setcolor(DARKGRAY);
	 outtextxy(18,10, "BOUTON 3D NON CLIQUE");

// x1 = 10 y1 = 70 x2 = 400 y2 =110  coul = rouge  relief = 4 clic = 1
	 bouton_3D(10,70,400,110,RED,4,CLIQUE);

	 setcolor(WHITE);
	 outtextxy(19,68, "BOUTON 3D CLIQUE");

// x1 = 10 y1 = 180 x2 = 200 y2 = 200  coul_cadre = jaune
	 // coul_fond = rouge vif   cadre avec une ombre = 1
	 box(10,180,200,300,YELLOW,LIGHTRED,OMBRE);

// x1 =220 y1 = 180 x2 = 400 y2 = 300  coul_cadre = vert  coul_fond = noir
	 // cadre standard
  	 box(220,180,400,300,LIGHTGREEN,BLACK,PAS_D_OMBRE);

// x1 =410 y1 = 10  x2 = 620 y2 = 400  coul_cadre = blanc coul_fond = bleu
	 // cadre standard avec un effet de degrade de 5
	 for (i1 = 0; i1 < 20; i1 += 5) {
		 box(410+i1, 10+i1,620 - i1,400-i1,WHITE,BLUE,PAS_D_OMBRE);
	 }

// x1 = 40 y1 = 365 x2 = 350 y2 = 395  coul_cadre = blanc
	 bouton_arrondi(40,365,350,395, WHITE);

	 setcolor(WHITE);
	 outtextxy(40,345, "BOUTON ARRONDI");
	 setcolor(BLACK);
	 outtextxy(40,346, "BOUTON ARRONDI");

   while ( !kbhit() ) {
	 // non clique
	 bouton_3D(10,122,400,165,LIGHTBLUE,4,NON_CLIQUE);
	 setcolor(WHITE);
	 outtextxy(20,122, "BOUTON 3D NON CLIQUE");

	 delay(400); // attendre avant de cliquer

	 // cliquer le bouton  clic = 1
	 bouton_3D(10,122,400,165,LIGHTBLUE,4,CLIQUE);

	   for (i1 = 0; i1 < 2; i1++) {
		  (i1 == 1) ? setcolor(WHITE) : setcolor(BLACK);
		  outtextxy(20+i1,122+i1, "BOUTON 3D CLIQUE");
	   }

	 sleep(1);

  } // fin de while (!kbhit...)

  // effacer l'ecran

  milieu_y = getmaxy() / 2;
  setcolor(getbkcolor());
  for (i1 = 0; i1 <= milieu_y; i1++) {
	  rectangle (0,0,getmaxx(),i1);
	  rectangle (0,getmaxy()-i1,getmaxx(),getmaxy());
   }
	 delay(500);

	// fermer le mode graphique
	 closegraph();

	 return EXIT_SUCCESS;
} // fin de main

void bouton_3D(int x1, int y1, int x2, int y2, int coul,int relief,int clic){
	int i1;

	// dessiner le fond du bouton en couleur
	setfillstyle(SOLID_FILL,coul);
	bar (x1 , y1 , x2 , y2 );

	// dessiner le bouton avec un relief
	for (i1 = 0; i1 < relief; i1++) {

	   setcolor(WHITE);
	   // trait blanc haut
	   line (x1 + i1, y1 + i1, x2 - i1, y1 + i1);
	   // trait blanc gauche
	   line (x1 + i1, y1 + i1, x1 + i1, y2 - i1);

	   setcolor(DARKGRAY);
	   // trait gris bas
	   line (x1 + i1, y2 - i1, x2 - i1, y2 - i1);
	   // trait gris droit
	   line (x2 - i1, y1 + i1, x2 - i1, y2 - i1);

	}

	// simuler le clique
	if (clic == CLIQUE) {
	  setcolor(BLACK);
	  for (i1 = 1; i1 < 3; i1++) {
		  rectangle (x1 + i1, y1 + i1, x2 - i1, y2 - i1);
	  }

	  setcolor(WHITE);
	  // cadre blanc exterieur
	  rectangle (x1 , y1 , x2 , y2 );
	}

return ;
} // fin de la fonction bouton_3D

void box(int x1, int y1, int x2, int y2, int coul_box,int coul_fond,int effet){

	// dessiner l'ombre avec un decalage de 5
	if (effet == OMBRE) {
	   setfillstyle(SOLID_FILL,BLACK);
	   bar (x1 + 5 , y1 + 5 , x2 + 5 , y2 + 5 );
	}

	setfillstyle(SOLID_FILL,coul_fond);
	bar (x1 , y1 , x2 , y2 );

	setcolor(coul_box);
	rectangle (x1 , y1 , x2 , y2 );
return ;
} // fin de la fonction box

void bouton_arrondi(int x1, int y1, int x2, int y2, int coul) {

	setcolor(coul);
	// cote gauche et haut
	arc(x1, y1, 110, 250,y2-y1);
	line(x1-10,y1-(y2-y1)+2, x2+10,y1-(y2-y1)+2);

	// cote droit et bas
	arc(x2, y1,290,70,y2-y1);
	line(x1 - 10,y1+(y2-y1)-2, x2 + 10,y1+(y2-y1)-2);

return ;
}  // fin de la fonction bouton_arrondi

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 18-07-2002 par cmarsc
// BOUTONS CADRES MODE GRAPHIQUE

Codes Sources

A voir également

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.