0

ライブ映像に何かを描こうとしています。私の意見では、これを行う最善の方法は WM_PIANT イベントを処理することです。

私の目的は、プレイヤーが最初に描画し、その後でアプリケーションを描画することです。そうすれば、ビデオに絵を描くことができます。これは、ウィンドウに新しいフレームを描画してイベントを処理する必要がある前に、毎回通知を受けたいということです。

私は DirectshowNet を使用しているので、C# でプログラミングしています (C++ の API が持つすべてのインターフェイスを持っています)。グラフ マネージャが特定のウィンドウ メッセージを WM_PAINT などのビデオ レンダラーに転送することを理解しています。

アプリケーションの後ではなく、アプリケーションの前にプレーヤーにフレームを描画させるにはどうすればよいですか?

4

1 に答える 1

0

WM_PAINT最善の方法ではなく、間違った方法です。

DxTextDirectShow.NET ライブラリからサンプルを確認してください。その説明は次のとおりです。

データストリームにテキスト文字列をスーパーインポーズする方法を示すサンプル アプリケーション。ストリームは avi ファイルから読み取られます。

これは、あなたが到達しようとしているものに非常に近いです。代替アプローチは、そこにある別のサンプルに示されていますBitmapMixer

BitmapMixer は、VMR9 を使用してビデオ上に描画する方法の例です。

このサンプルは、主に IVMRMixerBitmap9 インターフェイスを中心に構築されています。このインターフェイスは、ビットマップを GDI デバイス コンテキストまたは Direct3D サーフェスとして受け入れます。Direct3D サーフェスの主な利点は、真のアルファ透明度を使用できることです。GDI DC はアルファ ビットマップをサポートしておらず、透過性はカラー キーイングを使用して実現されます。

このサンプルは、GDI+ を使用してビットマップを動的に生成します。

于 2012-10-01T11:17:12.550 に答える