如何在控制台应用程序中更改打印后的文本颜色

本文关键字:打印 文本 颜色 控制台 应用程序 | 更新日期: 2023-09-27 18:26:44

我知道这个问题可能有些牵强,但如果这个功能是可能的,那就太棒了。我想在玩家写的时候改变文本的颜色,所以如果键入了某些关键字,它们就会变成某种颜色。

我知道你可以改变光标的位置,但我不知道这对改变颜色是否有帮助。我也知道你可以做Console.Clear,但如果可能的话,我不想这么做,因为从那以后我必须保存字符串并重新写入它,这对我的程序不适用/不合理。

如何在控制台应用程序中更改打印后的文本颜色

简短回答:一般不会,因为标准输出在历史上一直是一种只写的介质(想想20世纪60年代的电传打字机)。

复杂的答案:是的,多亏了'r的魔力。

基本上,你会在每次击键的基础上阅读用户键入的内容,并自己跟踪它(可能是在StringBuilder中),然后如果用户键入了神奇的单词,则使用'r擦除之前打印的行(将插入符号移动到控制台的第一列,而不创建新行),然后重写之前打印的内容,但在重新打印之前设置Console.ForegroundColor

您不需要自己手动打印每个击键(直到用高亮显示重新打印),因为Console.ReadKey不会干扰控制台窗口的正常操作及其本地回声行为。,

这里有一些简单的东西:

StringBuilder sb = new StringBuilder();
while( true ) {
    ConsoleKeyInfo key = Console.ReadKey();
    if( !Char.IsControl( key.KeyChar ) ) {
        sb.Append( key.KeyChar );
        if( sb.ToString() == "magic!" ) {
            Console.Write("'r");
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.Write( sb.ToString() );
            Console.ResetColor();
        }
    } else {
        sb.Length = 0;
    }
}

这段代码有缺陷且不完整,但我认为它展示了底层概念。