明らかな何かが欠けているに違いないと思いますが、数時間検索してもこれを見つけることができません。PictureBoxまたは他のコントロールを使用して、部分的に透明/アルファブレンドされたピクセルを含む画像を含め、それを別の画像の上に配置して、その下の画像に基づいてブレンドする方法はありませんか?
たとえば、これは私が望む結果を生み出します:
- フォームにパネルを配置します。
- OnPaintハンドラーを追加します。
- OnPaintハンドラーで1つのPNGを描画してから、両方にGraphics.DrawImageを使用して、その上に別のPNGを描画します。
これはしません:
PictureBoxをフォームに配置し、PNGに設定します。
フォームに別のPictureBoxを配置し、PNGに設定します。
2番目の画像ボックスを最初の画像ボックスの上に置きます。
... 2番目の画像ボックスが空で、背景色が透明であっても、その下の画像を覆っています。
私はこれがすべてのwinformコントロールがウィンドウであることに由来することを読んだので、本質的にそれらは透過的ではありません。
...しかし、私が移行している15年前のプラットフォームであるBorlandのVCLでさえ、いくつかのウィンドウレスコントロールを備えていたため、WinFormをイメージングするのは難しいので、少なくとも簡単な解決策はありませんか?
上記の私の最初の例は1つの答えですが、1つの大きなパネルしか使用できず、その中にすべての「コントロール」を描画できる場合は、多くの作業が追加されます。別々のマウスイベントなどで別々のコントロールを使用できると、はるかに便利です。画像コントロールではなく、自分で描画する必要があるコントロールであっても、各コントロールに1つの画像を配置できる限り、それで問題ありません。VCLでは、これを「ペイントボックス」と呼んでいました。これは、フォーム上に配置して、好きなように描画できる長方形の領域です。独自のマウスイベント、バウンドなどがあります。何も描画しないと、マウスイベントが発生することを除けば、そこにも存在しない(100%透明)ように見えるので、「ホット」として使用できます。スポット」または「ターゲット」も同様です。