2017-05-19 16 views
1

私はスクリーンレコーディングアプリケーションで作業していますが、画面をキャプチャできますが、マウスカーソルは表示されません。私はDXGI、SharpDX、Media Foundationを使用しました。マウスカーソルをキャプチャして画像バッファに描画するC#

私の質問です。イメージバッファにマウスカーソルを書き込むことが可能ですので、mediafoundationに送信したイメージバッファに、ビデオにエンコードする前にマウスカーソルがありますか?スクリーンキャプチャにマウスカーソルを含めるにはどうすればよいのでしょうか?ここでは多くのサンプルを見ましたが、それらの操作は両方のイメージをビットマップに変換してから両方を結合します。私はすでにそれを試みましたが、パフォーマンスは良くなく、CPU使用率が高く、fpsも低いです。カーソルなしで60fpsの滑らかさをキャプチャできます。おかげでアドバンス

答えて

0

あなたのタスクを実装することは可能ですが、C#のC++からいくつかのコードをコピーする必要があります。私のプロジェクトでは、Desktop Screen Capture on Windows via Windows Desktop Duplication API with Drawing of Cursor's Imageあなたは適切な解決策を見つけることができます。それは Direct3D11テクスチャを使用することに基づいています - MiscFlag - D3D11_RESOURCE_MISC_GDI_COMPATIBLEで作成されます。これは、IDXGISurface1::GetDCを介して表面上のGDIレンダリングを可能にし、カーソルの画像を描画するためのWindows関数DrawIconExを使用します。カーソルの描画は、Windowsの機能によって実行され、ビデオメモリのコンテキストで実行されます。

よろしくお願いいたします。

+0

私はIDXGISurface1 :: GetDCにスタックしています。 SharpDXでこのコードのラッパーを見つけることはできません。 – kripto

+0

なぜ見つからないのですか? [SharpDX-DXGI API](http://sharpdx.org/wiki/class-library-api/dxgi/#api-Interfaces)をチェックしてください。 - IDXGISurface1

  • GetDC
  • ???
  • ???

インターフェイスは、Windowsグラフィックデバイスインターフェイス(GDI)を使用してMicrosoft DirectX Graphics Infrastructure(DXGI)サーフェイスにレンダリングするサポートを追加することで拡張されています。

' –

+0

これは今働いてくれてありがとう – kripto

関連する問題