ページ 11

C#でのコントロールの透過について

Posted: 2015年9月03日(木) 21:57
by みなと
フォームの背景を透明にした状態で、ラベルの背景も半透明にしたいです。
つまり、デスクトップに重ねれば、ラベルの部分ではデスクトップが透けて見えるようにしたいです。

しかし、やってみると、ラベルの背景はフォームの透過色になってしまいます。
どうすればよいでしょうか。

Visual Studio C#でやっています。

Re: C#でのコントロールの透過について

Posted: 2015年9月06日(日) 04:35
by YuO
みなと さんが書きました:フォームの背景を透明にした状態で、ラベルの背景も半透明にしたいです。
みなと さんが書きました:しかし、やってみると、ラベルの背景はフォームの透過色になってしまいます。
みなと さんが書きました:つまり、デスクトップに重ねれば、ラベルの部分ではデスクトップが透けて見えるようにしたいです。
これ自体は,TransparencyKeyを使う方法が一番簡単にできます。
オフトピック
WS_EX_LAYEREDにあるように,Windows 8以降では子ウィンドウもWS_EX_LAYEREDをサポートします。
このため,CreateParams.ExStyle プロパティにWS_EX_LAYEREDを追加し,SetLayeredWindowAttributes 関数を呼び出すようにすれば,半透明のコントロールは作成可能だと思います。
そこまでしてやる必要があるのか,という疑問は出てきますが……。