フォームに表示されている Web カメラ フィードがあり、その上に描画したいと考えています。私は画像ボックスを使用してこれを行うつもりでしたが、PictureBox は真の透明度をサポートしておらず、フォームの色だけをサポートしていることがわかりました。また、フォームを表示する方法と同様に、表示したい方法であるアルファブレンディングもサポートしていません。
誰もこれを行う方法を知っていますか? または、これを実行できるコントロールを実装していますか?
フォームに表示されている Web カメラ フィードがあり、その上に描画したいと考えています。私は画像ボックスを使用してこれを行うつもりでしたが、PictureBox は真の透明度をサポートしておらず、フォームの色だけをサポートしていることがわかりました。また、フォームを表示する方法と同様に、表示したい方法であるアルファブレンディングもサポートしていません。
誰もこれを行う方法を知っていますか? または、これを実行できるコントロールを実装していますか?
Windowsフォームの透明性はちょっと壊れています。ご存知のように、重複するコントロールは実際にはサポートされていません。透明な部分を通してフォームの背景色を表示するだけです。いくつかのWindowsAPIマジックを使用すると、Bob Powellによるこの記事が示すように、多くのコントロールを真に透明に表示し、オーバーラップをサポートすることができます。彼のテクニックをラベルやカスタムコントロールで機能させることができましたが、期待外れの結果で機能させるように試みたと思いPictureBox
ます。回避策の1つは、画像を手動で描画するカスタムコントロールを作成することです。私は試していません。 これがフォーラムの投稿ですここで、真の透明性をサポートするカスタムコントロールを示します(そのフォーラムでの私のハンドルはAtmaWeaponです)。私の記憶は、Microsoftのコントロールがレンダリングされるときに発生する明らかな魔法のため、これがカスタムコントロールに最適であることを示唆しているようです。
または、WinFormsの代わりにWPFを使用してアプリケーションを実装することもできます。WPFの透過性は機能し、重複するコントロールをサポートします。これは、アプリケーションの開発方法にかなり大きな変化をもたらしますが、最初から機能します。
ほとんどの場合、Bob Powell がトランスコントロールで示した方法を使用してこれを行うという OwenP の回答は機能します。ただし、これは Web カメラへの直接描画インターフェイスであるため、ライブ フィードは常に他のコントロールの上にあるように見えました。
これを解決するために、私は少しごまかして、ビデオ フィード上で開くセカンダリ フォームを作成しました。次に、このセカンダリ フォームでいくつかのイベントを処理して、元のフォームに集中し、別のプログラムが使用されているときに処理する必要がありました。
PictureBox を別の別のフォームに配置し、フォームの不透明度の値を Windows スタイル カテゴリで使用できます。それはうまくいくでしょうか?