由于这一行代码,控制台中的颜色混乱了

Posted

技术标签:

【中文标题】由于这一行代码,控制台中的颜色混乱了【英文标题】:Colors are messed up in the console because of this one line of code 【发布时间】:2021-07-05 23:32:22 【问题描述】:

所以最近我一直在制作控制台 MIDI 播放器,但遇到了一个大问题。仅仅因为这一行代码,颜色将无法正常工作:

Console.SetCursorPosition(0,0);

每当我删除这行代码时,颜色似乎都能正常工作。这是我的意思的一个例子:

With "Console.SetCursorPosition(0,0)"

Without "Console.SetCursorPosition(0,0)"

哦,是的,顺便说一句,这是处理所有打印和颜色编码的代码:

    var noteDisplay = new Thread(() => 
        Console.Clear();
        while (!midiEnded) 
            Console.MoveBufferArea(0, 0, keyboardWidth, Console.WindowHeight - 1, 0, 1);
            Console.WriteLine(string.Join("", notes.ToArray()));
            Thread.Sleep((int)(4*(1/playbackSpeed)));
            Console.SetCursorPosition(0,0);
        
    );

//...

public static string EncodeToRGB(List<int> rgbList) 
    int res1 = 0;
    for (int i = 0; i < rgbList.Count; i++) res1 = (res1 << 8) | rgbList[i];
    return res1.ToString("X");

我发现的最奇怪的事情是: Weird console behaviour

说真的,我不知道为什么会这样。有没有人知道为什么会发生这种情况?

【问题讨论】:

你试过了吗 Console.SetCursorPosition(1,1); ? 如果您自己移动光标,您可能想要.Write() 而不是.WriteLine() 【参考方案1】:

我的建议是简单地使用Colorful Console。我已经非常广泛地使用它,它给了我零问题。

【讨论】:

另一个大问题,“找不到命名空间'Formatter'的类型。” Formatter 不是命名空间,而是一个类(假设您指的是Colorful.Formatter)。

以上是关于由于这一行代码,控制台中的颜色混乱了的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将控制台中的文本颜色和背景颜色更改为不同的颜色,同时仍然在同一行上? C++

Java中的流程控制

android如何实现代码控制RadioGroup中某一个按钮选中

android如何实现代码控制RadioGroup中某一个按钮选中

使用 R 为 corrplot 中的每一行添加颜色

如何在 JTextPane 中的一行上设置自定义背景颜色