2009-05-27 10 views
2

私は自分のフォームに表示されているWebカメラのフィードを持っていて、その上に描画したいと思います。私はPictureBoxを使ってこれを行うつもりでしたが、PictureBoxが真の透明度をサポートしていないことが判明しました。フォームの表示方法と同様、アルファブレンディングの表示方法もサポートしていません。C#Alpha Blend透明なPictureBox

誰でもこれを行う方法を知っていますか?またはこれを行うことができるコントロールが実装されていますか?

答えて

1

ほとんどの状況では、ボブ・パウエルがここhttp://www.bobpowell.net/transcontrols.htmを実証した方法を使用してこれを行うのOwenPの答えは動作します。しかし、それはウェブカメラへの直接描画インターフェイスだったので、ライブフィードは常に他のコントロールの上にあるように見えました。私は少しを騙して、これは国境を持っていたビデオフィード上で開き、二次フォームを作成し、これを解決するために

は、トップと与えられた透明度に常にに設定した、私はこのフォームに直接描きました。私は、元のフォームに集中し、別のプログラムが使用されているときに処理するために、このセカンダリフォームでいくつかのイベントを処理しなければなりませんでした。

0

あなたは別の別々のフォーム上のPictureBoxを入れて、Windowsのスタイルのカテゴリにフォーム不透明度の値を使用することができます。それは働くだろうか?

+0

んが、ピクチャボックスの透明性はそれだけで私はちょうどあなたのフォーラムのポストは非常に貴重な発見+1 – PeteT

5

Windowsフォームの透明度が壊れています。あなたが発見したように、実際には重複するコントロールをサポートしていません。透明部分を介してフォームの背景色を表示するだけです。いくつかのWindows APIの魔法を使うと、多くのコントロールを、重複をサポートして本当に透明に表示させることができます(this article by Bob Powell demonstrates)。私は彼の技法をラベルやカスタムコントロールのために作れるようにしましたが、私はそれが失望の結果をもたらすPictureBoxのために働かそうとしたと思います。回避策の1つは、イメージを手動で描画するカスタムコントロールを作成することです。私は試していない。 Here's a forum postここで私は本当の透明性をサポートするカスタムコントロールを紹介しています(そのフォーラムでの私のハンドルはAtmaWeaponです)。私の記憶は、レンダリング時にMicrosoftのコントロールで起こるいくつかの見た目の魔法のためにカスタムコントロールに最適です。

また、WinFormsではなくWPFを使用してアプリケーションを実装することもできます。 WPFの透過性は機能し、重複するコントロールをサポートします。これはアプリケーションの開発方法に大きな変化をもたらしますが、最初から機能します。

+1

残念ながら上それはコントロールの背景色を取得しますシンプルではありませんではないでしょう。 – snicker

関連する問題