0

ライブビデオに画像をオーバーレイしようとしています。使用するIDEはVisualStudioProfessional2010です。コードはC++で開発されています。ライブビデオに画像をオーバーレイしようとすると、ハンドルを使用して画像をロードします。

                           HANDLE hBitmap;            

         hBitmap = LoadImage(NULL, L"C:\\Users\\User\\Documents\\Visual Studio 2010\\Projects\\BMP_Image.bmp",IMAGE_BITMAP, 0,0, LR_LOADFROMFILE );

アルファブレンディングのメカニズムを使用して、画像をビデオにオーバーレイしています。私が遭遇した問題は、画像がビデオに5回連続してオーバーレイされることです。

rcファイルのダイアログボックスに配置された画像コントロールのIDを渡して、ライブビデオをロードして表示します。コードでMFCを使用していません。ビデオはDirect2Dメカニズムを使用してレンダリングされます

ビデオの解像度は640*480、ビットマップ画像の解像度は128*128です。このビットマップを取得すると、ビデオはビデオに5倍のオーバーレイ画像を生成します。

GetWindowRect()とScreentoClient()を使用してダイアログボックスの座標を取得しました。しかし、Pictureコントロールの座標が必要です。

私は次の疑問を持っています:

画像コントロールの座標を取得する方法???

画像コントロールの特定の場所に画像を配置する方法???

早い段階での肯定的な反応を楽しみにしています...


よろしく、

ヴィヴェック

4

1 に答える 1

0

次の関数を使用して、画像コントロールのハンドルを取得できます。

::GetDlgItem( hWnd of your dialog, Id of your picture control)

ハンドルを取得することで、位置、サイズ、

::GetWindowRect(hWnd, &rc)

StretchBlt などの API 呼び出しを使用して画像をオーバーレイすると、好きな場所に配置できます。

于 2012-12-01T13:29:21.850 に答える