画面全体のモノクロおよびその他のフルスクリーン効果を作成します
-
26-10-2019 - |
質問
C#またはプログラミング言語で、画面全体に効果を適用する方法を知っていますか?私は主にスクリーンモノクロ(特に黒の白の代わりに緑の白)を作ることに興味があります。
私はそれを行うことができるプログラムを見つけたので、クロスグラフィックカードソリューションが可能であることを知っています:http://www.freedomscientific.com/products/lv/magic-bloduct-page.asp
誰かがこれを達成する方法を知っていますか、どこを見るべきか?
ありがとう !!
解決
画面全体を変更する簡単なWindows APIはありません。ただし、これはデバイスドライバーレベルで実行できます。
それ以外の場合は、いくつかのWindows APIトリックに頼る必要があります。デスクトップ全体に「偽の」ウィンドウをループに配置する必要があります。偽のウィンドウの内容をつかむことなく画面の内容をつかみ、モノクロ効果を取得するために処理を行い、それを表示してください。偽のウィンドウ。はい、それはハッキーで遅いですが、可能です。さらにハッキーなのは、マウスクリックを取得して偽のウィンドウを「通過」するとき(たくさん SetWindowsRgn
通話)。
したがって、クロスプラットフォームはGDIを使用することを意味しますが、一部の古いDirectDraw APIは機能する可能性があります。その場合、ハードウェアオーバーレイ(およびより良いパフォーマンス)ではるかに簡単な時間があります。実際にハードウェアオーバーレイをサポートするカード数はわかりませんが、Windowsの新しいバージョンが古いDirectDraw APIをサポートしている場合。
もう1つの可能性は、ビデオカードにC#またはC ++またはC APIがある場合、デバイスドライバーコードを作成せずにカードで必要なことを何でもできることです。
それからcudaがありますが、私はまだそれを試していません。 Nvidiaボードでのストリーム処理のためのものであることは知っていますが、ビデオディスプレイを簡単にバックドアにすることができるのだろうかと思います。
他のヒント
これに興味のある将来の人々を助けるために:
これはで可能です 拡大APIのカラーエフェクトメソッド. 。これにより、画面全体に適用できるマトリックスを使用できます。
マイナススクリーン C#で説明している機能を実装するオープンソースプロジェクトです。
残念ながら、これはアフィン変換でのみ機能します。APIは、代表者などではなく拡張マトリックスのみを取得するためです。