Afficher le texte en couleur

Afficher le texte en couleur - C - Programmation

Marsh Posté le 29-11-2004 à 11:51:29    

Je souhaite afficher du texte en couleur à l'écran mais je n'arrive pas a le faire.  
J'utilise la fonction printf pour afficher mais je ne sais pas comment changer la couleur.
 
Merci

Reply

Marsh Posté le 29-11-2004 à 11:51:29   

Reply

Marsh Posté le 29-11-2004 à 11:57:36    

ca dépend du systeme, sous windows setconsoleattributes il me semble (tout y est sur msdn)

Reply

Marsh Posté le 29-11-2004 à 11:58:00    

ncurses

Reply

Marsh Posté le 29-11-2004 à 12:19:54    

http://forum.hardware.fr/icones/defaut/recherche.gif


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 29-11-2004 à 12:22:51    

Si tu es sous Linux, il faut que tu jettes un oeil sur ncurses.h.
 
Celle -ci est un peu équivalente à conio.h.
 
Si tu vas sur google, tu peux facilement trouver le How-To en pdf, et si tu prends la peine de le lire, toute la gestion de la couleur est expliquée.
;-)

Reply

Marsh Posté le 29-11-2004 à 12:24:27    

Ok mais comment est ce que ca fonctionne ncurses

Reply

Marsh Posté le 29-11-2004 à 12:26:33    

http://www.google.fr/search?q=ncur [...] S:official


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-11-2004 à 16:18:47    

Voici un petit programme que j'ai fait qui remplit de milliers de cases de couleurs ton écran.
 
Tu en comprendras sans problème le fonctionnement, si tu parcours ça en même temps que le pdf de ncurses.h
 

Code :
  1. #include <stdlib.h> // pour rand()
  2. #include <ncurses.h>
  3. main()
  4. {
  5. int i,j;
  6. int x,y;
  7. float maxx, maxy;
  8. initscr(); start_color(); curs_set(FALSE);
  9. // on définit 8 marqueurs, le dernier j
  10. // de la fonction init_pair est la couleur de fond.
  11. for (j=0;j<8;j++) init_pair(j+1,COLOR_WHITE,j);
  12. maxx=(float) COLS;
  13. maxy=(float) LINES;
  14. for (i=1; i<100000; i++)
  15.   {
  16.   // on tire un marqueur au hasard:
  17.   j=1+(int) (8.0 * rand()/(RAND_MAX+1.0));
  18.   attron(COLOR_PAIR(j));
  19.   // on prend une position au hasard dans l'écran:
  20.   x=(int) ( (maxx) * rand()/(RAND_MAX+1.0));
  21.   y=(int) ( (maxy) * rand()/(RAND_MAX+1.0));
  22.   // on dessine le caractère "espace" colorié
  23.   // à cette position:
  24.   mvprintw(y,x," " );
  25.   attroff(COLOR_PAIR(j));
  26.   refresh();
  27.   }
  28. // on regarde le joli résultat:
  29. getch();
  30. // on s'en va:
  31. endwin();
  32. }


 
A compiler par exemple ainsi:
 
gcc -o mosaique.exe mosaique.c -lncurses
 
Voilà, bon amusement !!
 :sol:


Message édité par calogerogigante le 30-11-2004 à 12:32:35
Reply

Marsh Posté le 29-11-2004 à 21:23:01    

Il n'y a pas moyen de faire ça en utilisant les séquences ANSI ?

Reply

Marsh Posté le 30-11-2004 à 00:18:49    

C'est ce que fait ncurses pour toi.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 30-11-2004 à 00:18:49   

Reply

Marsh Posté le 30-11-2004 à 00:27:20    

blurk a écrit :

Il n'y a pas moyen de faire ça en utilisant les séquences ANSI ?

ben fais le avec les séquences ANSI sous ton ouaindoz alors. ET NE DEMANDE PAS COMMENT. FAIS UNE RECHERCHE

Reply

Marsh Posté le 30-11-2004 à 15:31:57    

\033[Nm
 
avec N a remplacer par un numero de couleur.
 
printf("\033[33m Les ncurses, c'est un peu bourrin pour faire ca quand meme\033[0m\n" );
 

Reply

Marsh Posté le 30-11-2004 à 15:33:48    

Peut être, mais c'est d'avantage portable.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 30-11-2004 à 15:46:31    

Moi, c'est le contraire: je préfère utiliser les fonctions "claires et limpides" de ncurses.h (si on prend la peine d'étudier le tutoriel), plutôt que les signes cabalistiques pleins de crochets et de chiffres bizarres qui ne marchent pas une fois sur deux, d'un terminal à l'autre (je dis ça par expérience personnelle).
 
Sans rancune !
;-)
Calo.

Reply

Marsh Posté le 30-11-2004 à 16:45:32    

Taz a écrit :

ben fais le avec les séquences ANSI sous ton ouaindoz alors. ET NE DEMANDE PAS COMMENT. FAIS UNE RECHERCHE


 
Je ne suis pas l'auteur du topic, hein.
 
Je n'ai aucune envie d'afficher du texte en couleur, et je ne tourne pas sous "ouaindoz". Je posais juste cette question pour évoquer les séquences ANSI, une solution possible qui n'avait pas été abordée dans les réponses précédentes.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed