• 締切済み

Delphiでビデオキャプチャー画像の上にビットマップを重ねたい

プリクラもどきのようなアプリを作ることになりまして,そのため,とりあえずコンポーネントを探してきて,Delphi Super PageにあったTVideoというコンポーネントで,ビデオ入力の画面への表示はできるようになりました。 コンポーネントの機能で,クリップボードやビットマップへの書き出しが可能なので,撮影した後の処理は自力でできると思っているのですが,プリクラもどきであるので,「キャプチャーされて流れている映像の上にビットマップを重ねたい」のです。 透明色を設定してあるビットマップのフレームをメニューから選択して,撮影するときにビデオ入力を画面に表示して,その上にフレームを重ねたいということです。 しかし,コンポーネントのエリアにTImageを重ねても,何をしても,キャプチャー画面が最上位に来てしまいます。高速描画なとこなのでそうなってるのだとは思うんですが,ビットマップを重ねる方法や,その他の実現方法などありましたら教えてください。 VFWを直接いじればいいんでしょうが,VCLしか使えてないような人間なので。 開発環境は,Delphi 3.1です。今は6のPersonalを使っていますが,コンポーネントが対応していないので。 よろしくお願いします。

みんなの回答

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.1

こんにちは、honiyonです。  フレームを TBitmapオブジェクトに入れて、 Transparentをtrueにして下さい。  あとは、キャプチャ画像の入っている画像オブジェクトに対して Drawしてあげるだけで出来ると思います。(多分キャプチャ画像も Bitmapでないと失敗するかも?) 例) FrameCG.LoadFromFile('FRAME.BMP'); FrameCG.Transparent := true; FrameCG.TransparentColor := clWhite; CaptureCG.Canvas(0, 0, FrameCG);  ヘルプで TBitmapオブジェクトの TransparentやTransparentColorを参照してみてください。  参考になれば幸いです(..

i_ogi
質問者

補足

回答ありがとうございます。 しかしビデオキャプチャーのコンポーネントの方に,Canvasが無いと言われちゃうんです。 なんか無理そうなので,少々(というかかなり)強引にコンポーネント側のSavetoDIBでビットマップ書き出し -> Imageに読み込み,で,教えてもらったようにDrawしてます。フレームレートが10から5くらいで十分なので,速度的にもついてきていて。イベントに使うだけだしいいや。と投げてます。^^; いろいろいじるのは,まだ出来ないので... せめてクリップボード経由で読み込むようにはするつもりです。 どうもお手数おかけしました。m(__)m

関連するQ&A