21xrx.com
2024-11-22 05:38:00 Friday
登录
文章检索 我的文章 写文章
如何在C++中更换背景颜色
2023-07-04 19:34:57 深夜i     --     --
C++ 背景颜色 更换

在C++中,我们可以使用一些简单的代码来更改控制台窗口的背景颜色。通过更换背景颜色,我们可以使控制台程序具有更好的可视化效果,更加醒目。

首先,我们需要包含Windows.h头文件,这样才能调用相关的WinAPI函数。然后,我们可以使用SetConsoleTextAttribute函数来更改控制台文本的颜色。该函数使用的是控制台颜色代码,这些代码包含在Windows头文件中的枚举类型中。

下面是一些常见的控制台颜色代码:

1. FOREGROUND_BLUE - 蓝色文本

2. FOREGROUND_GREEN - 绿色文本

3. FOREGROUND_RED - 红色文本

4. FOREGROUND_INTENSITY - 加粗文本

5. BACKGROUND_BLUE - 蓝色背景

6. BACKGROUND_GREEN - 绿色背景

7. BACKGROUND_RED - 红色背景

8. BACKGROUND_INTENSITY - 加粗背景

为了更改控制台窗口的背景颜色,我们需要使用另一个WinAPI函数:SetConsoleScreenBufferSize。这个函数可以增加控制台窗口的尺寸,从而可以填充背景颜色。我们可以设置新的控制台屏幕缓冲区尺寸并向其中写入空格字符,从而使整个屏幕填充为所需的背景颜色。

下面是一个简单的代码示例,演示如何更改控制台窗口的背景颜色:

 c++

#include <iostream>

#include <Windows.h>

using namespace std;

int main() {

  HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

  CONSOLE_SCREEN_BUFFER_INFO consoleInfo;

  WORD saved_attributes;

  // 获取当前控制台屏幕缓冲区信息

  GetConsoleScreenBufferInfo(hConsole, &consoleInfo);

  saved_attributes = consoleInfo.wAttributes;

  // 设置控制台窗口背景色

  SetConsoleTextAttribute(hConsole, BACKGROUND_GREEN);

  // 设置新的控制台屏幕缓冲区尺寸

  COORD bufferSize = 80;

  SetConsoleScreenBufferSize(hConsole, bufferSize);

  // 填充整个屏幕背景

  DWORD bytesWritten;

  FillConsoleOutputCharacter(hConsole, (TCHAR)' ', bufferSize.X * bufferSize.Y, 0 , &bytesWritten);

  // 恢复原始控制台颜色设置

  SetConsoleTextAttribute(hConsole, saved_attributes);

  return 0;

}

在上述代码示例中,我们首先使用GetStdHandle函数获取控制台输出句柄。然后,我们使用GetConsoleScreenBufferInfo函数获取当前控制台屏幕缓冲区的信息,并保存原始的控制台属性。接着,我们通过SetConsoleTextAttribute函数将控制台窗口的背景色设置为绿色。接下来,我们设置新的控制台屏幕缓冲区尺寸,并使用FillConsoleOutputCharacter函数填充整个屏幕背景。最后,我们调用SetConsoleTextAttribute函数恢复原始控制台颜色设置。

通过更改控制台窗口的背景颜色,我们可以为控制台程序添加一些炫酷的可视化效果。尝试一下上述代码示例,探索不同的颜色选项,看看能做出什么样的优美效果。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复