C#:在用户修改控制台颜色托盘后重置控制台颜色托盘

C#:在用户修改控制台颜色托盘后重置控制台颜色托盘,c#,colors,ascii,console-application,C#,Colors,Ascii,Console Application,我正在为一个学校项目创建一个ASCII接口,但我遇到了一点问题 我最初对颜色进行了修改,使其更易于眼睛,更美观,只是因为我倾向于使用ol'cmd.exe,但看起来它又回来搅乱了我。柔和的深蓝色加上淡黄色的文字,看起来不错。很显然,Console.ConsoleColor的所有颜色都来自我在cmd.exe属性窗口中修改的颜色。无益!我不明白为什么这两者是分开的:/ 有没有人知道如何覆盖这个托盘?我希望我能在代码中设置RGB,但如果有办法访问System.Drawing.Color托盘,那就太棒了

我正在为一个学校项目创建一个ASCII接口,但我遇到了一点问题

我最初对颜色进行了修改,使其更易于眼睛,更美观,只是因为我倾向于使用ol'cmd.exe,但看起来它又回来搅乱了我。柔和的深蓝色加上淡黄色的文字,看起来不错。很显然,Console.ConsoleColor的所有颜色都来自我在cmd.exe属性窗口中修改的颜色。无益!我不明白为什么这两者是分开的:/

有没有人知道如何覆盖这个托盘?我希望我能在代码中设置RGB,但如果有办法访问System.Drawing.Color托盘,那就太棒了

我对这里的编程相当陌生,所以我非常希望有一个解释清楚的答案,不过我并不挑剔:p

以下是创建上述输出的代码:

//show a title
        Console.Title = "Contact Book";

        //set up the console window all nice like   
        Console.SetWindowSize(80, 50);

        Console.SetBufferSize(80, 50);

        //my attempt to reset the colors :( does not work
        Console.ResetColor();

        Console.BackgroundColor = ConsoleColor.Black;

        Console.ForegroundColor = ConsoleColor.White;

        Console.Clear();

        //write some stuff... :/
        Console.WriteLine("{0} {1}", Console.LargestWindowWidth, Console.LargestWindowHeight);

        Console.WriteLine("11111111112222222222333333333344444444445555555555666666666667777777777888888888889999999999900000000000");

        for (int i = 2; i != 10; i++)
        {
            Console.WriteLine("{0}", i);
        }

PS:本应嵌入图像,但这是我第一次访问stackoverflow.com,因此我没有代表:)

这完全是出于设计。控制台应用程序只能显示16种不同的颜色。快捷方式属性允许用户自定义这些颜色,就像控制面板中的显示小程序允许用户更改GUI应用程序的Windows主题颜色一样。覆盖用户的偏好几乎从来都不是一个错误


但是您可以通过pinvoking SetConsoleScreenBufferEx()API函数在Vista和Win7上运行。样板代码(C)已存在,请访问pinvoke.net获取您需要的声明。

这完全是出于设计。控制台应用程序只能显示16种不同的颜色。快捷方式属性允许用户自定义这些颜色,就像控制面板中的显示小程序允许用户更改GUI应用程序的Windows主题颜色一样。覆盖用户的偏好几乎从来都不是一个错误


但是您可以通过pinvoking SetConsoleScreenBufferEx()API函数在Vista和Win7上运行。样板代码(C)已存在,请访问pinvoke.net以获取所需的声明。

pinvoke eh?好吧新玩具!我没有想到你怎么可能永远都不想改变用户的偏好,但在这种情况下,我正在开发一款类似于ASCII时代的游戏,拥有一套可靠的颜色来使用更为合理。只是为了让设计师能够跨多台计算机提供一致的体验。(这确实让我觉得也许我应该有一个选项来启用/禁用某个地方的覆盖)我想投票,但唉,我只是一个傻瓜。非常感谢:)平沃克,嗯?好吧新玩具!我没有想到你怎么可能永远都不想改变用户的偏好,但在这种情况下,我正在开发一款类似于ASCII时代的游戏,拥有一套可靠的颜色来使用更为合理。只是为了让设计师能够跨多台计算机提供一致的体验。(这确实让我觉得也许我应该有一个选项来启用/禁用某个地方的覆盖)我想投票,但唉,我只是一个傻瓜。非常感谢:)