Dessin d'un bouton à enfoncer en allegro ( c )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 317 fois - Téléchargée 30 fois

Contenu du snippet

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¤

A voir également

Ajouter un commentaire Commentaires
Messages postés
193
Date d'inscription
mercredi 7 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2010

dsl, ce n'était pas du tout une reproche.
Je suis débutant et je peux pas forcement savoir ce qui manque C'est pour sa que je pose des question.


Bonne journée a tous.
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

je crois que cela vient de toi l'ami, si tu examines la source :p ( ouais c bien beau de gueuler mais fodrai d abord lire la source ) tu remarqueras que le code est un peu merdique normal c un code de debutant, mais aussi que c'est juste une fonction,tu pourra donc pas compiler le code comme un glandu ,pour utiliser ces boutons il faut faire une fonction main initialiser allegro etc....

au lieu de gueuler, lit un tuto C ou Cpp

sur ce salut

dsl pour l orthographe XD
Messages postés
193
Date d'inscription
mercredi 7 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2010

salut tout le monde.
MMoi j'ai dev C++ et C, quand j'ai mis ta source il m'a déclaré des erreurs.

Cela vient t-il de moi ou de ta source.
Messages postés
338
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
c'est ok j'avais fais une erreur.
encore bonne source.
Messages postés
1
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
2 juin 2005

Ca y est j'ai changé je l'ai mi dans débutant

Le code te donne des erreurs ? quoi exactement ?
Afficher les 7 commentaires

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.