web-dev-qa-db-ja.com

フォームの背景を透明にする

フォームの背景を透明にするにはどうすればよいですか? C#で可能ですか?

前もって感謝します!

12
The Mask

フォームのBackColorを珍しい色に設定できます(たとえばColor.Magenta)次に、フォームのTransparencyKeyプロパティを同じ色に設定します。次に、FormBorderStyleNoneに設定します。

もちろん、それは迅速で簡単な解決策です。コントロールの端は醜いです、あなたが追加した新しいコントロールの背景色を変更し続けなければなりません(それらがボタンであるかそのようなものである場合)そして他の多くの問題のホスト全体。

それはあなたが何を達成したいかによります。それは何ですか?ウィジェットを一種のものにしたい場合は、もっと良い方法があります。丸みを帯びた角やカスタム背景が必要な場合は、もっと良い方法があります。そのため、TransparencyKeyが想定していたものと異なる場合は、さらに情報を提供してください。

33
Ry-

フォームのコンストラクターに以下を入力します。

public Form1()
{
    this.TransparencyKey = Color.Turquoise;
    this.BackColor = Color.Turquoise;
}

注:この方法では、フォームをクリックすることができません。

14
Brian Graham

更新

方法:コントロールを透明な背景にする

非推奨方法:透明なWindowsフォームを作成する

:透過フォームはWindows 2000以降でのみサポートされているため、Windows 98などの古いオペレーティングシステムで実行すると、Windowsフォームは完全に不透明になります。 Opacityプロパティに設定された値に関係なく。

4
Mitch Wheat

Winformで透明な背景を取得する簡単な解決策は、次のようにOnPaintBackgroundメソッドを上書きすることです。

protected override void OnPaintBackground(PaintEventArgs e)
{
//empty implementation
}

(base.OnpaintBackground(e)が関数から削除されていることに注意してください)

1