相关疑难解决方法(0)

UNIX中终端应用程序中的彩色文本

我开始编写一个终端文本编辑器,类似于UNIX的第一个文本编辑器,例如vi.我唯一的目标是玩得开心,但我希望能够以彩色显示文本,因此我可以使用语法高亮来编辑源代码.

我怎样才能做到这一点?是否有一些特殊的POSIX API,或者我必须使用ncurses吗?(我宁愿不)

有什么建议?也许是UNIX API上的一些教科书?

c unix terminal

102
推荐指数
4
解决办法
13万
查看次数

在Windows中使用C++的颜色控制台输出

有没有办法将彩色文本输出到控制台?我使用的是Visual Studio 2010,只需要代码即可在Windows中运行.

我找不到除了Windows COLOR命令之外的任何东西都没有成功,但是它改变了整个屏幕的颜色,我正在寻找一些只会改变我希望输出的部分的东西.我在Managed C++中看到过它

例如,

{color red}
cout << "Hello ";
{color blue}
cout << "world\n";
Run Code Online (Sandbox Code Playgroud)

会产生红色和蓝色的"Hello world".

c++ visual-studio-2010 windows-console

10
推荐指数
2
解决办法
3万
查看次数

如何将一个 8 位颜色值拆分为两个 4 位颜色值?

所以我编写了一个程序,它读取位图并使用 windows.h 打印到控制台。

Windows(在控制台中)允许我为每个字符空间设置两种颜色 - 前景色和背景色。

我仅限于这些颜色的 4 位调色板:

http://www.infotart.com/blog/wp-content/uploads/2008/06/windows_4bit_color_swatches.png

我的程序对于 16 种颜色运行良好,但在计算 256 种颜色时遇到了困难。(或者弄清楚是否有可能)

我需要获取索引颜色的 RGB 值(来自 256 种 8 位颜色,例如 224、64、0)并将其显示为 16 种可用颜色中的两种,其中一种颜色是抖动的。

前景字符将是 ASCII 抖动字符之一(我认为是 176、177、178)。

所以我认为每个背景需要有 R、G、B 值 0、128、255 等,前景可以是 0、32、64、96、128、160、192、224 或 255

因此,如果我有数字 RGB = 192,0,0,我可以将背景设置为 RGB = 128,0,0,并将前景设置为 RGB = 255,0,0,ASCII 字符为 176(25% 抖动)

如果我有一个单独的抖动字符可用于红、绿和蓝色,这似乎会非常简单,但遗憾的是我没有。

我知道控制台是一个糟糕的选择,但我必须尝试在没有 Windows GDI 帮助的情况下执行此操作。

我完全被困在试图找出这个算法的过程中,甚至无法看出我的逻辑是否有意义。

有人能解释一下吗?感谢所有帮助,我碰壁了。

c windows algorithm programming-languages colors

5
推荐指数
1
解决办法
1098
查看次数

C++ 将控制台文本颜色设置为 RGB 值

我想将控制台的文本颜色设置为 RGB 颜色。我创建了一个函数来获取控制台的 ColorTable 并更改其中的颜色,但它不起作用。我不知道如何将文本颜色设置为颜色表中的值,因此我只是更改整个颜色表,但它没有执行任何操作。

void setColor(int r, int g, int b)
{
    COLORREF cr;
    cr = RGB(r, g, b);
    PCONSOLE_SCREEN_BUFFER_INFOEX ci;
    CONSOLE_SCREEN_BUFFER_INFOEX cir;
    ci = &cir;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    GetConsoleScreenBufferInfoEx(hConsole , ci);
    cout <<hex<< ci->ColorTable[2];
    for(int i=0;i<16;i++){
            ci->ColorTable[i] = cr;
    }
    SetConsoleScreenBufferInfoEx(hConsole, ci);

    GetConsoleScreenBufferInfoEx(hConsole , ci);

    cout <<endl <<  ci->ColorTable[2];
}
Run Code Online (Sandbox Code Playgroud)

main()多次调用该函数,但每次调用的输出都是相同的,并且颜色不会改变。SetConsoleScreenBufferInfoEx()并且GetConsoleScreenBufferInfoEx()似乎没有做任何事情,ci当它们被调用时保持不变。

我做错了什么?

另外,如果它有效,我假设背景颜色也会改变,因为我改变了整个调色板,那么如何将文本颜色设置为颜色表中的特定值,例如我放入ci->ColorTable[2] = cr;函数changeColor()而不是 for 循环,如何将文本颜色设置为现在存储的颜色ColorTable[2]

c++ winapi console-application

3
推荐指数
1
解决办法
1万
查看次数