2011-10-18 11 views
0

the code projectからthis codeを使用して、.pngイメージ(透明)を表示しました。 87行目で私は成功したラベルを追加しようとしましたが、何とかそれはフォームに表示されません。私はリフレッシュしようとしましたが、無効にしました。たぶん誰かが私を正しい方向に向けることができます。透明なフォームにコンポーネントを追加する

+0

これはかなり痛い方法ですForm.TransparencyKeyプロパティを使用しないようにします。 –

+0

Form.TransparencyKeyは、私が知る限り、影などの部分透明をサポートしていません。 –

答えて

1

UpdateLayeredWindowを使用しているため、「通常の」ペイントメカニズムが無効になっている、つまりWM_PAINTメッセージがウィンドウに送信されず、WinFormsライブラリはLabelコントロールをレンダリングする機会がありません。 UpdateLayeredWindowを使用している場合、それはすでにのための視覚的な表現を提供しているため、アプリケーションは、WM_PAINTまたはその他の塗装メッセージに応答する必要がないこと

注:

は私が述べMSDNでレイヤードウィンドウを使用する方法についてthis articleを見つけましたウィンドウとシステムはそのイメージの保存、作成、スクリーン上でのレンダリングを行います。 UpdateLayeredWindowは非常に強力ですが、しばしば既存のWin32アプリケーションの描画方法を変更する必要があります。

私はWinFormsがあなたのアプローチと一緒に働くことができないのではないかと恐れています。たとえそうであったとしても、実際の透明度はwinformsで簡単にはできないので、不愉快な結果になる可能性があります(つまり、ラベルは透過的に表示されず、親の背景色を描きます)。

関連する問題