在控制台中使用颜色,如何以简化的表示法存储

Chr*_*ris 5 .net c# console

下面的代码显示了不同颜色的线条.
但那就是很多代码只能输入一行并再次重复整个程序.
我怎样才能简化这一点,所以我不需要一遍又一遍地编写相同数量的代码?

        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.Write(">>> Order: ");
        Console.ResetColor();
        Console.Write("Data");
        Console.ForegroundColor = ConsoleColor.DarkGreen;
        Console.Write("Parity");
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.Write(" <<<");
Run Code Online (Sandbox Code Playgroud)

有没有办法存储...... = Console.ForegroundColor = ConsoleColor.Cyan; ?

"文字"+颜色?+"文字"; 等等...

任何输入赞赏的问候.

Jon*_*eet 19

你的意思并不完全清楚,但你可以随时创建辅助方法:

public static void ColoredConsoleWrite(ConsoleColor color, string text)
{
    ConsoleColor originalColor = Console.ForegroundColor;
    Console.ForegroundColor = color;
    Console.Write(text);
    Console.ForegroundColor = originalColor;
}
Run Code Online (Sandbox Code Playgroud)

  • @Chris:关键是你只需要编写一次该方法,然后多次调用它.也许如果你能举例说明你如何*在整个程序中编写代码,那会有所帮助. (5认同)

Erd*_*tur 9

使用可以使用我的库Edokan.KaiZen.Colors.它是node.js的npm模块的无耻颜色副本.

它有一些问题,但它的工作原理.实际上它只是你想要的方式.

Console.WriteLine("INFO: ".Cyan().Bold() + " This is just a message");
Run Code Online (Sandbox Code Playgroud)


dev*_*uff 6

另一个想法是嵌入类似ANSI转义码的东西,但它们相当广泛,颜色只是它们的一小部分.

因此,我建议在输出字符串中嵌入颜色代码,使用基本多语言平面(BMP)中的Unicode专用区(PUA)和基本解析器/渲染器.

顺便说一下,控制台颜色设置对于过程是全局的,因此如果多个线程生成彩色输出,则每个块都需要被临界区包围以避免"颜色混乱".

由于内联有点长,我已将示例源上传到我的网站.