[C#] .NET에서 콘솔에 컬러로 쓸 수 있습니까?

작은 명령 줄 도구를 작성하면 다른 색상으로 출력하는 것이 좋습니다. 이게 가능해?



답변

예. 이 기사를 참조 하십시오 . 다음은 그 예입니다.

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();
        }
    }
}


답변

내가 만든 작은 플러그인 (볼 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를 사용하면 터미널마다 각 운영 체제마다 색상이 다르기 때문에 사용자 환경을 “보존”하려는 경우 또 다른 문제가 있습니다.

텍스트 형식 (색상, 정렬 등) 으로이 문제를 해결하는 라이브러리를 만들고 있습니다. 자유롭게 사용하고 기여하십시오.

https://github.com/deinsoftware/colorify/NuGet 패키지 로도 제공

Windows / Linux 용 색상 (어두운) :
여기에 이미지 설명을 입력하십시오

MacOS 용 색상 (빛) :
여기에 이미지 설명을 입력하십시오


답변

위의 답변에 모두 사용 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