@RollRoll nie znajduje się w domyślnym cmd.exe. Możesz jednak spróbować użyć emulatora konsoli, który obsługuje ulepszanie obrazu tła, ale i tak nie można tego zrobić programowo.
Remigiusz Schoida
+1 Kiedy robiłeś te rzeczy od ponad 10 lat i dopiero teraz dowiedziałeś się, co wiedzieli 10 lat temu ... to nigdy się nie zestarzeje, ha.
Jester
116
classProgram{staticvoidMain(){Console.BackgroundColor=ConsoleColor.Blue;Console.ForegroundColor=ConsoleColor.White;Console.WriteLine("White on blue.");Console.WriteLine("Another line.");Console.ResetColor();}}
Powyższe komentarze to solidne odpowiedzi, jednak należy pamiętać, że nie są one bezpieczne dla wątków. Jeśli piszesz do konsoli z wieloma wątkami, zmiana kolorów doda warunek wyścigu, który może stworzyć dziwnie wyglądający wynik. Łatwo to jednak naprawić:
Pisanie z wielu wątków bez synchronizacji spowoduje zniekształcone wyjście, nawet jeśli nie zostaną zmienione kolory: nie tylko zmiana kolorów powoduje wyścig
Joe
6
@Joe Pojedyncze Writepołączenie nie będzie zniekształcone. Zobacz stackoverflow.com/questions/4812508/… . To tylko kolejność wywołań zapisu, co nie jest „bezpieczne”.
BatteryBackupUnit
27
Stworzyłem małą wtyczkę (dostępną na NuGet ), która pozwala na dodawanie dowolnych kolor (jeśli jest obsługiwany przez terminal) do wyjścia konsoli, bez ograniczeń klasycznych rozwiązań.
Działa poprzez rozszerzenie Stringobiektu, a składnia jest bardzo prosta:
"colorize me".Pastel("#1E90FF");
Obsługiwane są zarówno kolory pierwszego planu, jak i tła.
To naprawdę niesamowity kawałek kodu. Doceniam opcję dezaktywacji przedłużenia całego koloru. Pasuje do użycia opcji koloru w systemie Linux (ls –color = auto).
MianenCZ
13
Tak, to łatwe i możliwe. Zdefiniuj pierwsze domyślne kolory.
Console.Clear()jest to ważne, aby ustawić nowe kolory konsoli. Jeśli nie wykonasz tego kroku, zobaczysz połączone kolory, gdy poprosisz o wartości za pomocą Console.ReadLine().
Następnie możesz zmienić kolory na każdym wydruku:
Console.BackgroundColor=ConsoleColor.Black;Console.ForegroundColor=ConsoleColor.Red;Console.WriteLine("Red text over black.");
Po zakończeniu programu pamiętaj, aby po zakończeniu zresetować kolory konsoli:
Console.ResetColor();Console.Clear();
Teraz z netcore mamy kolejny problem, jeśli chcesz „zachować” wrażenia użytkownika, ponieważ terminal ma różne kolory w każdym systemie operacyjnym.
Tworzę bibliotekę, która rozwiązuje ten problem z formatem tekstu: kolory, wyrównanie i wiele więcej. Zapraszam do korzystania i przyczyniania się.
Tak, jest to możliwe w następujący sposób. Te kolory mogą być używane w aplikacji konsolowej do wyświetlania niektórych błędów w kolorze czerwonym itp.
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
Oto prosta metoda, którą napisałem do pisania komunikatów konsoli z wbudowanymi zmianami kolorów. Obsługuje tylko jeden kolor, ale pasuje do moich potrzeb.
// 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();}
Zabrano stąd .
źródło
Powyższe komentarze to solidne odpowiedzi, jednak należy pamiętać, że nie są one bezpieczne dla wątków. Jeśli piszesz do konsoli z wieloma wątkami, zmiana kolorów doda warunek wyścigu, który może stworzyć dziwnie wyglądający wynik. Łatwo to jednak naprawić:
źródło
Write
połączenie nie będzie zniekształcone. Zobacz stackoverflow.com/questions/4812508/… . To tylko kolejność wywołań zapisu, co nie jest „bezpieczne”.Stworzyłem małą wtyczkę (dostępną na NuGet ), która pozwala na dodawanie dowolnych kolor (jeśli jest obsługiwany przez terminal) do wyjścia konsoli, bez ograniczeń klasycznych rozwiązań.
Działa poprzez rozszerzenie
String
obiektu, a składnia jest bardzo prosta:Obsługiwane są zarówno kolory pierwszego planu, jak i tła.
źródło
Tak, to łatwe i możliwe. Zdefiniuj pierwsze domyślne kolory.
Console.Clear()
jest to ważne, aby ustawić nowe kolory konsoli. Jeśli nie wykonasz tego kroku, zobaczysz połączone kolory, gdy poprosisz o wartości za pomocąConsole.ReadLine()
.Następnie możesz zmienić kolory na każdym wydruku:
Po zakończeniu programu pamiętaj, aby po zakończeniu zresetować kolory konsoli:
Teraz z netcore mamy kolejny problem, jeśli chcesz „zachować” wrażenia użytkownika, ponieważ terminal ma różne kolory w każdym systemie operacyjnym.
Tworzę bibliotekę, która rozwiązuje ten problem z formatem tekstu: kolory, wyrównanie i wiele więcej. Zapraszam do korzystania i przyczyniania się.
https://github.com/deinsoftware/colorify/, a także dostępny jako pakiet NuGet
Kolory dla systemu Windows / Linux (ciemny):
Kolory dla MacOS (jasny):
źródło
Aby dodać do powyższych odpowiedzi, których wszyscy używają
Console.WriteLine
: aby zmienić kolor w tym samym wierszu tekstu, napisz na przykład:źródło
Tak, jest to możliwe w następujący sposób. Te kolory mogą być używane w aplikacji konsolowej do wyświetlania niektórych błędów w kolorze czerwonym itp.
źródło
Oto prosta metoda, którą napisałem do pisania komunikatów konsoli z wbudowanymi zmianami kolorów. Obsługuje tylko jeden kolor, ale pasuje do moich potrzeb.
źródło