使整个屏幕单色和其他全屏效果

时间:2011-01-27 20:13:03

标签: c# fullscreen effects monochrome

有没有人知道如何使用c#或任何编程语言将效果应用于整个屏幕。 我最感兴趣的是使屏幕变为单色(特别是绿白而不是黑白)。

我知道可以使用跨图解卡解决方案,因为我发现了一个可以执行此操作的程序: http://www.freedomscientific.com/products/lv/magic-bl-product-page.asp

任何人都知道如何完成这个或哪里的事情?

谢谢!

2 个答案:

答案 0 :(得分:2)

没有简单的Windows API来修改整个屏幕内容。但这可以在设备驱动程序级别完成。

否则你必须采用一些Windows API技巧:在整个桌面上放置一个“虚假”窗口,循环:抓取整个屏幕内容而不抓取假窗口内容,进行处理以获得单色效果,然后显示在假窗口上。是的,这很黑,很慢,但可能。当你点击鼠标点击假窗口(很多SetWindowsRgn个电话)时,更加hacky。

因此,这里的跨平台意味着使用GDI,虽然一些较旧的DirectDraw API可能有效,但在这种情况下,您可以更轻松地使用硬件覆盖(以及更好的性能)。虽然我不确定有多少卡实际上支持硬件覆盖,并且新版本的Windows支持较旧的DirectDraw API。

另一种可能性是,如果视频卡具有C#或C ++或C API,那么您可以使用该卡执行任何操作而无需编写设备驱动程序代码。

然后是CUDA,但我还没有尝试过。我知道它适用于nVidia主板上的流处理,但我想知道它是否可以让你轻松进入视频显示器的后门。

答案 1 :(得分:2)

帮助将来对此感兴趣的人:

Magnification API's color effect method可以实现这一点。这允许人们使用可以应用于整个屏幕的矩阵。

NegativeScreen是一个开源项目,它实现了您在C#中描述的功能。

不幸的是,这仅适用于仿射变换,因为API只采用增强矩阵而不是委托或其他东西。