@RollRoll não está no cmd.exe padrão. No entanto, você pode tentar usar um emulador de console, que suporta ajustes na imagem de plano de fundo, mas ainda assim, isso não pode ser feito programaticamente.
Remigiusz Schoida 02/03/19
+1 Quando você faz essas coisas há mais de 10 anos e apenas agora aprendeu o que elas sabiam há 10 anos ... isso nunca envelhece, ha.
Jester
116
classProgram{staticvoidMain(){Console.BackgroundColor=ConsoleColor.Blue;Console.ForegroundColor=ConsoleColor.White;Console.WriteLine("White on blue.");Console.WriteLine("Another line.");Console.ResetColor();}}
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:
Escrevendo de vários segmentos sem sincronização resultará na saída ilegível mesmo se não houver mudanças de cor: ele não está apenas mudando as cores que faz com que uma condição de corrida
Joe
6
@ Joe Uma única Writechamada não será distorcida. Consulte stackoverflow.com/questions/4812508/… . É apenas a ordem das chamadas de gravação que não é "segura".
BatteryBackupUnit 17/10
27
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 Stringobjeto e a sintaxe é muito simples:
"colorize me".Pastel("#1E90FF");
As cores de primeiro e segundo plano são suportadas.
Este é realmente um pedaço incrível de código. Aprecio a opção de basicamente desativar a extensão de cores inteiras. É adequado ao uso da opção de cores no linux (ls –color = auto).
MianenCZ
13
Sim, é fácil e possível. Defina as primeiras cores padrão.
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.
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 backgroundConsole.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);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();}
Retirado daqui .
fonte
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:
fonte
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:As cores de primeiro e segundo plano são suportadas.
fonte
Sim, é fácil e possível. Defina as primeiras cores padrão.
Console.Clear()
é importante para definir novas cores do console. Se você não fizer essa etapa, poderá ver cores combinadas ao solicitar valores comConsole.ReadLine()
.Em seguida, você pode alterar as cores em cada impressão:
Ao finalizar o programa, lembre-se de redefinir as cores do console ao finalizar:
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
Cores para Windows / Linux (Escuro):
Cores para MacOS (Light):
fonte
Apenas para adicionar às respostas acima que todos usam
Console.WriteLine
: para alterar a cor na mesma linha de texto, escreva por exemplo:fonte
Sim, é possível da seguinte maneira. Essas cores podem ser usadas em um aplicativo de console para visualizar alguns erros na cor vermelha etc.
fonte
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.
fonte