写一个小的命令行工具,用不同的颜色输出会很好。这可能吗?


当前回答

是的,这很简单,也有可能。定义第一个默认颜色。

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

从这里拍的。

下面是我编写的一个简单方法,用于编写带有内联颜色变化的控制台消息。它只支持一种颜色,但它符合我的需要。

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

我已经创建了一个小插件(在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的颜色(浅色):