2016-04-26 8 views
1

子フォームがメインフォーム上に表示され、不透明な部分が空白になります。 C# winforms pop up with background fadedで提供されているソリューションを使用して同じ結果を達成しました。灰色の効果を持つメインフォーム上のC#子フォーム

今、子フォームで使用されているパネルの角を丸くしたいとします。どんな助け?

以下のリンクのパネルを使用して角を丸くしました。パネルは丸みを帯びていますが、依然として矩形の線(画像で強調表示されています)が見えます。それを消滅させる方法はありますか? enter image description here

+0

これは難しいことです。 winformsで丸い角のコントロールを作成することはそれほど難しくありませんが、半透明のフォームと組み合わせるのは難しいです。 私はおそらくこれを間違った方法で解決しましたが、私がそれを手に入れようとしていた頃には、私はそれを変更できないほど多くのコードが書かれていました。 正しい方法は、[この回答](http://stackoverflow.com/a)に書かれているように[Hans Passant](http://stackoverflow.com/users/17034/hans-passant)のトリックから始めるのがおそらくです。/10267279/3094533)を使用して半透明の背景を作成し、透明キーがコーナーの周囲に表示されないようにする方法を見つけます。 –

+0

私は現在、適切な答えを書く時間がありません。しかし、他の人が助けてくれるかもしれません。ハンスはあなたが彼を必要とする時、どこにいるのですか? –

+0

あなたの返事を待っています.... – Rocky

答えて

1

http://www.openwinforms.com/creating_cool_gradient_panel_gdi.html

は私が解決策を見つけました。フォーム塗料で

追加:フォーム負荷に

this.BackColor = Color.Lime; 
     this.TransparencyKey = Color.Lime; 

     var hb = new HatchBrush(HatchStyle.Percent60, this.TransparencyKey); 
     e.Graphics.FillRectangle(hb, this.DisplayRectangle); 

をCTRL =パネルのパネルのエッジのラウンドを行います。

Rectangle bounds = new Rectangle(0, 0, ctrl.Width, ctrl.Height); 
     int iCornerRadius = 20; 
     GraphicsPath gpath = new GraphicsPath(); 
     gpath.AddArc(bounds.X, bounds.Y, iCornerRadius, iCornerRadius, 180, 90); 
     gpath.AddArc(bounds.X + bounds.Width - iCornerRadius, bounds.Y, iCornerRadius, iCornerRadius, 270, 90); 
     gpath.AddArc(bounds.X + bounds.Width - iCornerRadius, bounds.Y + bounds.Height - iCornerRadius, iCornerRadius, iCornerRadius, 0, 90); 
     gpath.AddArc(bounds.X, bounds.Y + bounds.Height - iCornerRadius, iCornerRadius, iCornerRadius, 90, 90); 
     gpath.CloseAllFigures(); 

     ctrl.Region = new Region(gpath); 
     ctrl.Show(); 
+0

解決策を投稿する時間がなかったとしても、うまくいきました。 –

関連する問題