Je fais de la programmation dans le cadre scolaire et dans mes programmes j'ai souvent eu à dessiner des boutons que l'utilisateur pouvait cliquer pour changer de fenetre ou choisir une valeur, etc ..
Dans ce sous-programme on dessine un bouton sur lequel on va pouvoir cliquer et qui s'utilise comme un rectfill() : on choisit la position des coins et sa couleur.
Les paramètres du tube sont :
- la bitmap sur laquelle on dessine
- la position en x du coin hg
- la position en y du coin hg
- la position en x du coin bd
- la position en y du coin bd
- la couleur du bouton "au repos"
- la couleur du bouton qd la souris passe dessus
- la profondeur du relief ( de 1 à 5 )
- le texte à ecrire sur le bouton
Le retour est un 1 si l'utilisateur a cliqué, un 0 sinon.
Source / Exemple :
/*
Dessin d'un bouton que l'on peut cliquer avec la souris.
Faites moi part de vos impressions :-P : Mds_138@hotmail.com
¤Mds¤
int draw_bouton(BITMAP *buffer, int posx, int posy, int pos2x, int pos2y, int color1, int color2, int profondeur, char* texte)
{
int pos_mouse=1; // Pour savoir si la souris est sur le bouton
int color; // Pour definir la couleur du bouton
int c_hg; // Couleur du coin haut gauche
int c_bd; // Couleur du coin bas droite
int texte_x; // Position du texte en x
int texte_y; // Position du texte en y
int retour=0; // Renvoi
int i;
if(profondeur >5)profondeur=5;
if(profondeur <=0)profondeur=1;
// Si la souris est sur le bouton on modifie la valeur de pos_mouse
if(mouse_x>=posx && mouse_x<=pos2x && mouse_y>=posy && mouse_y<=pos2y)
{
pos_mouse=2;
// Si l'utilisateur clique sur le bouton
if(mouse_b & 1)
{
pos_mouse=3;
// On renvoie un 1 si le bouton est enfoncé
retour=1;
}
}
else pos_mouse=1;
// Changement des couleurs pour les effets de perspective et pour savoir si la souris est sur le bouton
switch(pos_mouse)
{
case 1:c_hg=255;c_bd=0;
color=color1;
texte_x=(posx+pos2x)/2;
texte_y=(posy+pos2y)/2;
break;
case 2:c_hg=255;c_bd=0;
color=color2;
texte_x=(posx+pos2x)/2;
texte_y=(posy+pos2y)/2;
break;
case 3:c_hg=0;c_bd=255;
color=color2;
texte_x=((posx+pos2x)/2)+profondeur;
texte_y=((posy+pos2y)/2)+profondeur;
break;
}
// Dessin de lignes blanches et noires pour la perspective
for(i=0;i!=profondeur;i++)
{
hline(buffer,posx,posy+i,pos2x-i,makecol(c_hg,c_hg,c_hg));
vline(buffer,posx+i,posy,pos2y-i,makecol(c_hg,c_hg,c_hg));
hline(buffer,posx+i,pos2y-i,pos2x,makecol(c_bd,c_bd,c_bd));
vline(buffer,pos2x-i,posy+i,pos2y,makecol(c_bd,c_bd,c_bd));
}
// Remplissage du bouton
rectfill(buffer,posx+profondeur,posy+profondeur,pos2x-profondeur,pos2y-profondeur,color);
// Ecriture du texte
textprintf_centre(buffer,font,texte_x,texte_y,makecol(255,255,255),"%s",texte);
// Renvoi : 1 si le bouton a été cliqué, 0 sinon
return retour;
}
Conclusion :
¤Mds¤
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.