如何在控制台应用程序中更改打印后的文本颜色
本文关键字:打印 文本 颜色 控制台 应用程序 | 更新日期: 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;
}
}
这段代码有缺陷且不完整,但我认为它展示了底层概念。