我正在尝试在 C++ 中将整个屏幕颜色更改为蓝色。 这是我的代码:
#include <iostream>
#include <tchar.h>
#include <windows.h>
#include <wingdi.h>
#include <winuser.h>
void Color()
{
int screenWidth = GetSystemMetrics(SM_CXSCREEN);
int screenHeight = GetSystemMetrics(SM_CYSCREEN);
HWND hwnd = GetDesktopWindow();
HDC hdc = GetWindowDC(hwnd);
COLORREF color = 0x000000FF;
HBRUSH brush = CreateSolidBrush(color);
SetDCBrushColor(hdc, color);
PatBlt(hdc, 0, 0, screenWidth, screenHeight, PATCOPY);
ReleaseDC(hwnd, hdc);
}
我的问题是它将颜色设置为白色而不是红色。 我搜索了问题的解决方案,但得到了 Photoshop 教程。
我做错了什么?
抱歉回复晚了,但如果您想要将程序的背景颜色设置为蓝色,您应该考虑执行以下操作。 - 处理 WM_PAINT 事件中屏幕颜色的变化,以便背景每次都可以重新绘制为蓝色。 -为此,请在 WM_PAINT 案例中创建一个 PAINTSTRUCT 实例。 -调用
BeginPaint(hwnd, PAINTSTRUCTURE)
并将返回值存储在 HDC
对象中。此函数返回 PAINSTRUCT
窗口的设备上下文的句柄,该句柄作为参数传递给它。该函数还负责其他功能,例如了解需要绘制窗口的哪些部分及其坐标。
下次打电话FillRect(HDC,RECT,HBRUSH)
。该函数接收由 HDC
返回的 BeginPaint()
、一个存储需要重绘区域的 PaintStructure
成员变量和一个 HBRUSH
。
- HBRUSH
是一种可以让您在屏幕上绘图的工具。该工具可以存储颜色和样式(据我所知)。因此调用 FillRect
并传递 HBRUSH 将使用 HBRUSH 的颜色。
下面是这个的代码
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC dc = BeginPaint(hwnd, &ps);
HBRUSH hbr = CreateSolidBrush(RGB(0, 100, 150));
FillRect(dc, &ps.rcPaint, hbr);
DeleteObject(hbr);
EndPaint(hwnd, &ps);
break;
}
我大约 10 分钟前才了解到这一点,并正在寻找有关该主题的问题,以便我能获得更多理解。如果我错了请原谅我。