En écrivant un petit outil en ligne de commande, il serait agréable de générer des couleurs différentes. Est-ce possible?
Oui. Voir ceci article . Voici un exemple à partir de là:
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
class Program
{
static void Main()
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();
}
}
Tiré de ici .
Les commentaires ci-dessus sont 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 couleur ajoutera une condition de concurrence critique pouvant générer une sortie étrange. C'est simple à corriger cependant:
public class ConsoleWriter
{
private static object _MessageLock= new object();
public void WriteMessage(string message)
{
lock (_MessageLock)
{
Console.BackgroundColor = ConsoleColor.Red;
Console.WriteLine(message);
Console.ResetColor();
}
}
}
J'ai créé un petit plugin (disponible sur NuGet ) qui vous permet d'ajouter n'importe lequel (si pris en charge par votre terminal) couleur à la sortie de votre console, sans les limitations des solutions classiques.
Cela fonctionne en étendant l'objet String
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.
Oui, c'est facile et posible. Définir les premières couleurs par défaut.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
il est important de définir de nouvelles couleurs pour la console. Si vous ne faites 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, rappelez-vous 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 souhaitez "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 de texte: couleurs, alignement et beaucoup plus. N'hésitez pas à utiliser et à contribuer.
https://github.com/deinsoftware/colorify/ et également disponible en tant que package NuGet
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 afficher certaines erreurs en couleur rouge, etc.
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;//after this line every text will be white on blue background
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();//reset to the defoult colour