プロが教えるわが家の防犯対策術!

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

開発環境は,Delphi 3.1です。今は6のPersonalを使っていますが,コンポーネントが対応していないので。
よろしくお願いします。

A 回答 (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を参照してみてください。

 参考になれば幸いです(..

この回答への補足

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

どうもお手数おかけしました。m(__)m

補足日時:2001/09/27 17:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!