Ответы:
Да. Смотрите эту статью . Вот пример оттуда:
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();
}
}
Взято отсюда .
Выше комментарии являются твердыми ответами, однако обратите внимание, что они не являются потокобезопасными. Если вы пишете на консоль с несколькими потоками, изменение цвета добавит условие гонки, которое может создать странный внешний вид. Это легко исправить, хотя:
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();
}
}
}
Write
звонок не будет искажен. См. Stackoverflow.com/questions/4812508/… . Это просто порядок записи вызовов, который не является «безопасным».
Я создал небольшой плагин (доступный на NuGet ), который позволяет вам добавлять любой (если поддерживается вашим терминалом) цвет к выводу вашей консоли, без ограничений классических решений.
Это работает, расширяя String
объект, и синтаксис очень прост:
"colorize me".Pastel("#1E90FF");
Поддерживаются цвета переднего плана и фона.
Да, это легко и возможно. Определите первые цвета по умолчанию.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
это важно для того, чтобы установить новые цвета консоли. Если вы не сделаете этот шаг, вы можете увидеть комбинированные цвета, когда запрашиваете значения с Console.ReadLine()
.
Затем вы можете изменить цвета на каждом принте:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Когда закончите свою программу, не забудьте сбросить цвета консоли при завершении:
Console.ResetColor();
Console.Clear();
Теперь с netcore у нас есть другая проблема, если вы хотите «сохранить» пользовательский интерфейс, потому что терминалы имеют разные цвета в каждой операционной системе.
Я делаю библиотеку, которая решает эту проблему с помощью Text Format: цвета, выравнивание и многое другое. Не стесняйтесь использовать и внести свой вклад.
https://github.com/deinsoftware/colorify/, а также доступен в виде пакета NuGet
Просто добавьте к ответам выше, которые все используют Console.WriteLine
: чтобы изменить цвет в той же строке текста, напишите, например:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
Да, это возможно следующим образом. Эти цвета можно использовать в консольном приложении для просмотра ошибок красного цвета и т. Д.
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
Вот простой метод, который я написал для написания консольных сообщений со встроенными изменениями цвета. Он поддерживает только один цвет, но он соответствует моим потребностям.
// usage: WriteColor("This is my [message] with inline [color] changes.", ConsoleColor.Yellow);
static void WriteColor(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();
}