Visual Basic でのビデオ ウィンドウへの画像のミキシング
このトピックは Windows XP にのみ適用。
このセクションでは、アルファ ブレンディングした画像をビデオ コントロールのビデオ イメージ上に表示する方法について説明する。内部的には、ビデオ コントロールは Video Mixing Renderer フィルタ (VMR) を使う。ビデオ コントロールの View メソッドを呼び出してフィルタ グラフを作成すると、MSVidCtl.VideoRendererActive プロパティには VMR を制御する MSVidVideoRenderer デバイス オブジェクトへの参照が保持される。
最初にイメージとして使う IPictureDisp オブジェクトを取得する。たとえばイメージ ファイルをロードしたり、ビデオ コントロールからフレームをキャプチャすることができる。
Dim iPic As IPictureDisp
' イメージをロードする。
Set iPic = LoadPicture("MyPicture.gif")
' ... またはフレームをキャプチャする。
Set iPic = VideoControl.VideoRendererActive.Capture
MSVidVideoRenderer.MixerBitmapPositionRect プロパティを設定して、ビデオ コントロールのウィンドウに表示する画像の位置を指定する。デフォルトではウィンドウ全体に表示される。次の例では、ウィンドウの左上隅に画像を配置している。
ScaleMode = 3 ' ピクセル
Dim iVid As MSVidVideoRenderer
Set iVid = gTV.VideoRendererActive
iVid.MixerBitmapPositionRect.Top = 0
iVid.MixerBitmapPositionRect.Left = 0
iVid.MixerBitmapPositionRect.Height = VideoControl.Height / 2
iVid.MixerBitmapPositionRect.Width = VideoControl.Width / 2
iVid.MixerBitmapPositionRect = rect
MixerBitmapPositionRect プロパティは IMSVidRect オブジェクトであり、矩形を表す。この例では、矩形の座標を元の場所で変更している。MixerBitmapPositionRect プロパティへの参照を設定すると、このプロパティは元の矩形の "コピー" を返す。コピーを変更しても元の矩形は変更されない。次に例を示す。
Dim rect As IMSVidRect
Set rect = VideoControl.VideoRendererActive.MixerBitmapPositionRect
' これは矩形のコピーである。
rect.Height = VideoControl.Height / 2
rect.Width = VideoControl.Width / 2
' オリジナルを変更するには、コピーを次のプロパティに戻す:
VideoControl.VideoRendererActive.MixerBitmapPositionRect = rect
矩形の座標は twip ではなくピクセル単位であるため、ビデオ コントロールの Height および Width プロパティを取得する前に ScaleMode 関数を呼び出すこと。
最後に、MSVidVideoRenderer.MixerBitmapOpacity プロパティと MSVidVideoRenderer.MixerBitmap プロパティを設定して目的の不透明性と画像を指定する。
iVid.MixerBitmapOpacity = 80
iVid.MixerBitmap = iPic
不透明性は 0 ~ 100 の割合 (パーセント) で表す。MSVidVideoRenderer.SetupMixerBitmap メソッドを使うと 3 つのプロパティをすべて一度に設定できる。
VideoControl.VideoRendererActive.SetupMixerBitmap iPic, 80, rect