【问题标题】:redefining Console colour palette in c#在 C# 中重新定义控制台调色板
【发布时间】:2010-07-10 14:27:04
【问题描述】:

谁能告诉我如何在 C# 中重新定义控制台的调色板?

【问题讨论】:

    标签: c#


    【解决方案1】:

    是的,这是可能的。你需要一堆 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);
    

    访问 pinvoke.net 或使用 P/Invoke Interop Assistant 获取使用此代码所需的声明。

    【讨论】:

    • 我认为你的代码只会让你使用标准颜色,你不需要 P/Invoke 来做——这已经在 Console 类上可用。问题(正如我读到的)是,您可以使用预定义的 16 以外的颜色吗?
    • @Joe:注意这段代码如何在 ColorTable 数组中设置一个条目。这就是替换默认颜色的原因,在这种情况下为黄色。 ColorTable 有 16 个条目,最初是由 Windows 和/或程序的快捷方式配置的 16 种默认颜色。
    • 我删除了我的答案,我不知道这个。
    猜你喜欢
    • 2016-02-24
    • 2013-10-14
    • 2015-09-11
    • 1970-01-01
    • 2015-02-09
    • 2011-11-28
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多