2011-07-10 17 views

答えて

31

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

もちろん、これは簡単で簡単な解決策です。コントロールの端は醜いので、追加した新しいコントロールの背景色(ボタンなどの場合)とその他の問題のホスト全体を変え続ける必要があります。

本当に達成したいことに依存します。それは何ですか?あなたがウィジェットのようなことをしたいのなら、はるかに良い方法があります。丸いコーナーやカスタムの背景が必要な場合は、はるかに良い方法があります。したがって、TransparencyKeyがあなたのことを念頭に置いたものではない場合は、さらに詳しい情報を提供してください。

12

フォームのコンストラクタに次のように置く:Winフォームでの透明な背景を得るために

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

またはそれ以上:TransparencyKey = BackColor; – DuckSoy

+0

またはそれ以上:this.TransparencyKey = this.BackColor = Color.Turquoise; – Drarig29

+0

このアプローチはエッジを醜いものにします。特に陰があるとき。 –

1

簡単な解決策は、次のようにOnPaintBackgroundメソッドを上書きすることです:

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

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

+4

しかし、それはちょうど完全に黒の背景を描画します... – Ryan

+0

これは完全に黒の背景を描画しません。このメソッドをオーバーライドし、基本クラスメソッドを呼び出さない場合は、何も背景として描画されません。 3人(自分自身を含む)がこれをテストしており、すべての人に有効です。 –

+0

どのOSを使用しましたか? – Ryan