Respostas:
Sim. Veja este artigo . Aqui está um exemplo 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();
}
}
Retirado daqui .
Os comentários acima são respostas sólidas, no entanto, observe que eles não são seguros para threads. Se você estiver gravando no console com vários threads, a alteração de cores adicionará uma condição de corrida que pode criar uma saída com aparência estranha. É simples de corrigir:
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
chamada não será distorcida. Consulte stackoverflow.com/questions/4812508/… . É apenas a ordem das chamadas de gravação que não é "segura".
Eu criei um pequeno plugin (disponível no NuGet ) que permite adicionar qualquer cor (se suportada pelo seu terminal) à saída do console, sem as limitações das soluções clássicas.
Ele funciona estendendo o String
objeto e a sintaxe é muito simples:
"colorize me".Pastel("#1E90FF");
As cores de primeiro e segundo plano são suportadas.
Sim, é fácil e possível. Defina as primeiras cores padrão.
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
Console.Clear()
é importante para definir novas cores do console. Se você não fizer essa etapa, poderá ver cores combinadas ao solicitar valores com Console.ReadLine()
.
Em seguida, você pode alterar as cores em cada impressão:
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");
Ao finalizar o programa, lembre-se de redefinir as cores do console ao finalizar:
Console.ResetColor();
Console.Clear();
Agora, com o netcore, temos outro problema se você deseja "preservar" a experiência do usuário, porque o terminal tem cores diferentes em cada sistema operacional.
Estou criando uma biblioteca que resolve esse problema com o formato de texto: cores, alinhamento e muito mais. Sinta-se livre para usar e contribuir.
https://github.com/deinsoftware/colorify/ e também disponível como pacote NuGet
Apenas para adicionar às respostas acima que todos usam Console.WriteLine
: para alterar a cor na mesma linha de texto, escreva por exemplo:
Console.Write("This test ");
Console.BackgroundColor = bTestSuccess ? ConsoleColor.DarkGreen : ConsoleColor.Red;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine((bTestSuccess ? "PASSED" : "FAILED"));
Console.ResetColor();
Sim, é possível da seguinte maneira. Essas cores podem ser usadas em um aplicativo de console para visualizar alguns erros na cor vermelha 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
Aqui está um método simples que escrevi para escrever mensagens de console com alterações de cores embutidas. Ele suporta apenas uma cor, mas atende às minhas necessidades.
// 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();
}