2

誰かがc#または任意のプログラミング言語で画面全体に効果を適用する方法を知っていますか?私は主に画面をモノクロにすることに興味があります(具体的には、黒白ではなく緑白)。

http://www.freedomscientific.com/products/lv/magic-bl-product-page.asp:それを実行できるプログラムを見つけたので、クロスグラフィックカードソリューションが可能であることを知ってい ます。

誰かがこれを達成する方法やどこを見ればよいか知っていますか?

ありがとう !!

4

2 に答える 2

2

画面の内容全体を変更する簡単なWindowsAPIはありません。ただし、これはデバイスドライバーレベルで実行できます。

それ以外の場合は、Windows APIのトリックに頼る必要があります。「偽の」ウィンドウをデスクトップ全体にループ状に配置します。偽のウィンドウのコンテンツを取得せずに画面のコンテンツ全体を取得し、処理を行ってモノクロ効果を取得してから、それを表示します。偽のウィンドウ。はい、それはハッキーで遅いですが、可能です。SetWindowsRgnさらにハッキーなのは、マウスをクリックして偽のウィンドウ(多くの呼び出し)を「通過」するときです。

したがって、ここでのクロスプラットフォームとは、GDIを使用することを意味しますが、一部の古いDirectDraw APIは機能する可能性があります。その場合、ハードウェアオーバーレイを使用する時間がはるかに簡単になります(パフォーマンスが向上します)。実際にハードウェアオーバーレイをサポートしているカードの数はわかりませんが、新しいバージョンのWindowsが古いDirectDrawAPIをサポートしているかどうかはわかりません。

もう1つの可能性は、ビデオカードにC#、C ++、またはC APIがある場合、デバイスドライバーコードを記述せずに、カードで好きなことを実行できることです。

それからCUDAがありますが、私はまだそれを試していません。nVidiaボードでのストリーム処理用であることは知っていますが、ビデオディスプレイに簡単にバックドアできるのではないかと思います。

于 2011-01-27T23:39:54.037 に答える
2

これに興味を持っている将来の人々を助けるために:

これは、Magnification API の color effect メソッドで可能です。これにより、画面全体に適用できるマトリックスを使用できます。

NegativeScreenは、C# で説明している機能を実装するオープン ソース プロジェクトです。

残念ながら、これはアフィン変換でのみ機能します。API はデリゲートなどではなく、拡張行列のみを受け取るためです。

于 2016-02-18T01:31:18.327 に答える