在c#中重新定义控制台调色板

git*_*rac 3 c#

有人可以告诉我如何在C#中重新定义控制台的调色板?

Han*_*ant 10

是的,这是可能的.你需要一堆P/Invoke声明来使用这样的代码:

CONSOLE_SCREEN_BUFFER_INFOEX info;
info.cbSize = sizeof(info);
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfoEx(hConsole, &info);
info.ColorTable[14] = RGB(255, 128, 0);  // Replace yellow
SetConsoleScreenBufferInfoEx(hConsole, &info);
SetConsoleTextAttribute(hConsole, FOREGROUNDINTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
Run Code Online (Sandbox Code Playgroud)

访问pinvoke.net或使用P/Invoke的互操作助理,让你需要使用这个代码的声明.

  • @Joe:注意此代码如何设置ColorTable数组中的条目.这就是取代默认颜色的原因,在这种情况下为黄色.ColorTable有16个条目,最初是由Windows和/或程序的快捷方式配置的16种默认颜色. (4认同)
  • 我认为你的代码只会让你使用P/Invoke不需要的标准颜色 - 这些颜色已在Console类中提供.问题(正如我读到的那样)是,你能使用预定义的16以外的颜色吗? (2认同)