Сделайте весь экран монохромным и другие полноэкранные эффекты - PullRequest
2 голосов
/ 27 января 2011

Кто-нибудь знает, как применять эффекты ко всему экрану, в c # или любом другом языке программирования. В основном я заинтересован в том, чтобы сделать экран монохромным (в частности, зелено-белым вместо черно-белого).

Я знаю, что решение для кросс-графических карт возможно, потому что я нашел программу, которая может это сделать: http://www.freedomscientific.com/products/lv/magic-bl-product-page.asp

Кто-нибудь знает, как чего-то добиться или где искать?

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 18 февраля 2016

Чтобы помочь людям в будущем, которые заинтересованы в этом:

Это возможно с помощью метода цветового эффекта Magnification API .Это позволяет использовать матрицу, которая может быть применена ко всему экрану.

NegativeScreen - проект с открытым исходным кодом, реализующий функцию, которую вы описываете в C #.

К сожалению, это работает только с аффинными преобразованиями, поскольку API принимает только расширенные матрицы, а не делегат или что-то в этом роде.

2 голосов
/ 28 января 2011

Нет простого Windows API для изменения всего содержимого экрана.Но это может быть сделано на уровне драйвера устройства.

В противном случае вам придется прибегнуть к некоторым хитростям Windows API: поместите «поддельное» окно на весь рабочий стол, в цикле: захватите все содержимое экрана без захватаПоддельное содержимое окна, выполните обработку, чтобы получить монохромный эффект, а затем отобразите его в поддельном окне.Да, это нахально и медленно, но возможно.Еще более неприятно, когда вы получаете щелчки мышью, чтобы «пройти» поддельное окно (много вызовов SetWindowsRgn).

Так что кросс-платформенность здесь означает использование GDI, хотя некоторые более старые API DirectDraw могут работать, вВ этом случае вам будет намного проще с аппаратными оверлеями (и лучшей производительностью).Хотя я не уверен, сколько карт на самом деле поддерживают аппаратные оверлеи, и если более новые версии Windows поддерживают более старые API DirectDraw.

Еще одна возможность состоит в том, если видеокарта имеет API C # или C ++ или C, тогдаВы можете делать с картой все, что хотите, без написания кода драйвера устройства.

Тогда есть CUDA, но я еще не пробовал это.Я знаю, что она предназначена для потоковой обработки на платах nVidia, но мне интересно, может ли она помочь вам с легким задним ходом при просмотре видео.

...