Question

Je suis actuellement en utilisant le code suivant au texte de sortie en vert à la borne:

printf("%c[1;32mHello, world!\n", 27);

Cependant, je veux plus de nuances de vert. Quelle est la meilleure façon d'y parvenir?

Était-ce utile?

La solution

Vous pouvez utiliser le script 256colors2.pl sur Rob site de Meerman pour vous assurer que le terminal gère 256 couleurs correctement. Ensuite, choisissez la bonne combinaison de valeurs RVB pour vous donner la bonne teinte de vert.

Sur la base de son scénario, il semble que les numéros de couleur sont essentiellement un décalage d'un schéma de couleurs base 6:

COLOR = r*6^2 + g*6 + b) + 16

Et pour la couleur de premier plan, nous devons utiliser:

\x1b[38;5;${COLORNUM}m

Et encore une fois basé sur son scénario, voici une boucle (perl) qui affiche la lettre O dans la couleur désirée:

# now the color values
for ($green = 0; $green < 6; $green++) {
    for ($red = 0; $red < 6; $red++) {
        for ($blue = 0; $blue < 6; $blue++) {
            $color = 16 + ($red * 36) + ($green * 6) + $blue;
            print "\\x1b[38;5;${color}m :\x1b[38;5;${color}m O\x1b[0m ";
            print "\n" if ($blue == 2 || $blue == 5);
        }
    }
    print "\n";
}

Et voici un échantillon de sa production:

Capture montrant des &eacute;chantillons de valeur de couleur

NOTE : Charles semble un peu plus sur la façon dont il fonctionne réellement et ce que vous devrez faire pour vérifier que le shell prend en charge les capacités requises. Mes informations sont basées strictement sur l'observation et les essais avec une coquille connue pour supporter 256 couleurs (konsole).

Autres conseils

Comment vous faites cela dépend de votre terminal. Vous pouvez devriez pouvoir interroger une base de données termcap ou terminfo pour savoir comment.

Il est plus facile de démontrer avec quelques commandes tput.

par exemple. sur mon terminal courant:

tput initc 2 500 900 100
tput setaf 2

Définit la couleur 2 être une nuance de vert (les paramètres sont des valeurs RGB entre 0 et 1000) et les commutateurs du premier plan à cette couleur.

Pour voir la séquence de caractères nécessaire dans un programme de C pour votre terminal donné, vous pouvez afficher les capacités avec infocmp.

par exemple. (Pour mon terminal)

$ infocmp -1 | grep initc
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
$ infocmp -1 | grep setaf
        setaf=\E[38;5;%p1%dm,

La mise en forme de % paramter est un peu (OK très) douloureux pour analyser, mais est documentée dans la page de manuel de infocmp. Traduire ce à printf chaîne de format est pas trop dur.

Cela peut vous aider à:

http://en.wikipedia.org/wiki/ANSI_escape_code

Vous ne pouvez vraiment obtenir 2 différentes nuances de chaque couleur. Essayez de remplacer le 1 par un 2 pour obtenir vert foncé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top