Как инвертировать все цвета экрана с помощью Windows Magnification API? - PullRequest
0 голосов
/ 17 июня 2019

Я пишу приложение-шалость в основном на Java, но с небольшой долей Visual C ++, чтобы помочь с доступом к некоторым собственным API / функциям Windows.

Как я могу использовать Visual C ++ для автоматического инвертирования цветов всего экрана с помощью функции, имитирующей то, как это делает лупа Windows, с функцией возврата ее к обычному состоянию с помощью API-интерфейса Windows Magnification?

Я провел интенсивные онлайн-исследования и не смог найти ни одного кода, который бы выполнил мою задачу.

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

API увеличения просто использует DSTINVERT флаг:

Тест инвертирования цветов экрана =>

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);
0 голосов
/ 17 июня 2019

Я не могу добавлять комментарии к сообщениям, поэтому пишу здесь.

Возможно, вы пропустили следующий проект с открытым исходным кодом, который называется NegativeScreen.Вот его описание

Описание

Основная цель NegativeScreen - поддерживать свои бедные слезные глаза, наслаждаясь ярким белым переплетением в темной комнате.Эта задача радостно достигается путем инвертирования цветов вашего экрана.В отличие от лупы Windows, которая также способна к такой инверсии цвета, NegativeScreen был специально разработан, чтобы быть простым и удобным в использовании.Он поставляется с минимальным графическим интерфейсом в виде иконки в системном трее с контекстным меню, но не беспокойтесь, это только облегчает использование!

Особенности

Инвертируйте цвета экрана.

....

Так что вы можете проверить это для справки https://github.com/mlaily/NegativeScreen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...