我主要用Java编写一个恶作剧应用程序,但是有一小部分Visual C ++可以帮助访问某些本机Windows API /功能。
我该如何使用Visual C ++通过一个函数来自动反转整个屏幕的颜色,以模仿Windows Magnifier的方式,并使用Windows Magnification API将该函数恢复为正常状态?
我已经进行了深入的在线研究,但是没有找到能完成任务的任何代码。
答案 0 :(得分:0)
我无法在帖子上添加评论,所以我在这里写下来。
您可能已经错过了以下名为NegativeScreen的开源项目。 这是说明
说明
NegativeScreen的主要目标是在 在一个黑暗的房间里享受明亮的白色网络。这个任务是 反转屏幕的颜色即可轻松实现。不像 Windows放大镜,也可以进行这种颜色反转, NegativeScreen专门设计为易于使用 采用。它带有系统形式的最小图形界面 带有上下文菜单的任务栏图标,但是不用担心,这只会使它 更容易使用!
功能
反转屏幕的颜色。
....
因此,您可能需要检查一下以获取参考https://github.com/mlaily/NegativeScreen
答案 1 :(得分:0)
放大API仅使用 DSTINVERT 标志:
A反转屏幕测试颜色=>
HDC hDC = GetDC(NULL);
RECT rcClient;
GetClientRect(GetDesktopWindow(), &rcClient);
int nWidth = rcClient.right - rcClient.left;
int nHeight = rcClient.bottom - rcClient.top;
HDC hMemDC = CreateCompatibleDC(hDC);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, nWidth, nHeight);
HBITMAP hBmOld = (HBITMAP)SelectObject(hMemDC, hBitmap);
BitBlt(hMemDC, 0, 0, nWidth, nHeight, hDC, 0, 0, SRCCOPY);
BitBlt(hDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, DSTINVERT);
SelectBitmap(hMemDC, hBmOld);
DeleteDC(hMemDC);
DeleteObject(hBitmap);
ReleaseDC(NULL, hDC);