@RollRoll n'est pas dans le cmd.exe par défaut. Vous pouvez cependant essayer d'utiliser un émulateur de console, qui prend en charge le réglage de l'image d'arrière-plan, mais cela ne peut quand même pas être fait par programme.
Remigiusz Schoida
+1 Quand vous faites ce truc depuis plus de 10 ans et que vous venez d' apprendre ce qu'ils savaient il y a 10 ans ... cela ne vieillit jamais, ha.
Jester
116
classProgram{staticvoidMain(){Console.BackgroundColor=ConsoleColor.Blue;Console.ForegroundColor=ConsoleColor.White;Console.WriteLine("White on blue.");Console.WriteLine("Another line.");Console.ResetColor();}}
Les commentaires ci-dessus sont tous deux des réponses solides, mais notez qu'ils ne sont pas thread-safe. Si vous écrivez sur la console avec plusieurs threads, le changement de couleurs ajoutera une condition de concurrence qui peut créer une sortie étrange. C'est simple à réparer:
L'écriture à partir de plusieurs threads sans synchronisation entraînera une sortie brouillée même s'il n'y a pas de changement de couleur: ce n'est pas seulement le changement de couleurs qui provoque une condition de
concurrence
6
@Joe Un seul Writeappel ne sera pas brouillé. Voir stackoverflow.com/questions/4812508/… . C'est juste l'ordre des appels en écriture qui n'est pas "sûr".
BatteryBackupUnit
27
J'ai créé un petit plugin (disponible sur NuGet ) qui vous permet d'ajouter n'importe quelle couleur (si prise en charge par votre terminal) à la sortie de votre console, sans les limitations des solutions classiques.
Cela fonctionne en étendant l' Stringobjet et la syntaxe est très simple:
"colorize me".Pastel("#1E90FF");
Les couleurs de premier plan et d'arrière-plan sont prises en charge.
C'est un morceau de code vraiment incroyable. J'apprécie l'option de désactiver essentiellement l'extension de couleur entière. Cela convient à l'utilisation de l'option de couleur sous Linux (ls –color = auto).
MianenCZ
13
Oui, c'est facile et possible. Définissez les premières couleurs par défaut.
Console.Clear()c'est important pour définir de nouvelles couleurs de console. Si vous n'effectuez pas cette étape, vous pouvez voir les couleurs combinées lorsque vous demandez des valeurs avec Console.ReadLine().
Ensuite, vous pouvez changer les couleurs sur chaque impression:
Console.BackgroundColor=ConsoleColor.Black;Console.ForegroundColor=ConsoleColor.Red;Console.WriteLine("Red text over black.");
Lorsque vous avez terminé votre programme, n'oubliez pas de réinitialiser les couleurs de la console à la fin:
Console.ResetColor();Console.Clear();
Maintenant, avec netcore, nous avons un autre problème si vous voulez "préserver" l'expérience utilisateur car les terminaux ont des couleurs différentes sur chaque système d'exploitation.
Je crée une bibliothèque qui résout ce problème avec le format texte: couleurs, alignement et bien plus encore. N'hésitez pas à utiliser et à contribuer.
Juste pour ajouter aux réponses ci-dessus que tous utilisent Console.WriteLine: pour changer de couleur sur la même ligne de texte, écrivez par exemple:
Console.Write("This test ");Console.BackgroundColor= bTestSuccess ?ConsoleColor.DarkGreen:ConsoleColor.Red;Console.ForegroundColor=ConsoleColor.White;Console.WriteLine((bTestSuccess ?"PASSED":"FAILED"));Console.ResetColor();
Oui, c'est possible comme suit. Ces couleurs peuvent être utilisées dans une application console pour visualiser certaines erreurs de couleur rouge etc ...
Console.BackgroundColor=ConsoleColor.Blue;Console.ForegroundColor=ConsoleColor.White;//after this line every text will be white on blue backgroundConsole.WriteLine("White on blue.");Console.WriteLine("Another line.");Console.ResetColor();//reset to the defoult colour
Voici une méthode simple que j'ai écrite pour écrire des messages de console avec des changements de couleur en ligne. Il ne prend en charge qu'une seule couleur, mais il répond à mes besoins.
// usage: WriteColor("This is my [message] with inline [color] changes.", ConsoleColor.Yellow);staticvoidWriteColor(string message,ConsoleColor color){var pieces =Regex.Split(message,@"(\[[^\]]*\])");for(int i=0;i<pieces.Length;i++){string piece = pieces[i];if(piece.StartsWith("[")&& piece.EndsWith("]")){Console.ForegroundColor= color;
piece = piece.Substring(1,piece.Length-2);}Console.Write(piece);Console.ResetColor();}Console.WriteLine();}
Pris d' ici .
la source
Les commentaires ci-dessus sont tous deux des réponses solides, mais notez qu'ils ne sont pas thread-safe. Si vous écrivez sur la console avec plusieurs threads, le changement de couleurs ajoutera une condition de concurrence qui peut créer une sortie étrange. C'est simple à réparer:
la source
Write
appel ne sera pas brouillé. Voir stackoverflow.com/questions/4812508/… . C'est juste l'ordre des appels en écriture qui n'est pas "sûr".J'ai créé un petit plugin (disponible sur NuGet ) qui vous permet d'ajouter n'importe quelle couleur (si prise en charge par votre terminal) à la sortie de votre console, sans les limitations des solutions classiques.
Cela fonctionne en étendant l'
String
objet et la syntaxe est très simple:Les couleurs de premier plan et d'arrière-plan sont prises en charge.
la source
Oui, c'est facile et possible. Définissez les premières couleurs par défaut.
Console.Clear()
c'est important pour définir de nouvelles couleurs de console. Si vous n'effectuez pas cette étape, vous pouvez voir les couleurs combinées lorsque vous demandez des valeurs avecConsole.ReadLine()
.Ensuite, vous pouvez changer les couleurs sur chaque impression:
Lorsque vous avez terminé votre programme, n'oubliez pas de réinitialiser les couleurs de la console à la fin:
Maintenant, avec netcore, nous avons un autre problème si vous voulez "préserver" l'expérience utilisateur car les terminaux ont des couleurs différentes sur chaque système d'exploitation.
Je crée une bibliothèque qui résout ce problème avec le format texte: couleurs, alignement et bien plus encore. N'hésitez pas à utiliser et à contribuer.
https://github.com/deinsoftware/colorify/ et également disponible en tant que package NuGet
Couleurs pour Windows / Linux (foncé):
Couleurs pour MacOS (clair):
la source
Juste pour ajouter aux réponses ci-dessus que tous utilisent
Console.WriteLine
: pour changer de couleur sur la même ligne de texte, écrivez par exemple:la source
Oui, c'est possible comme suit. Ces couleurs peuvent être utilisées dans une application console pour visualiser certaines erreurs de couleur rouge etc ...
la source
Voici une méthode simple que j'ai écrite pour écrire des messages de console avec des changements de couleur en ligne. Il ne prend en charge qu'une seule couleur, mais il répond à mes besoins.
la source