C#主形上的子形具有灰显效果

C#主形上的子形具有灰显效果,c#,winforms,panel,C#,Winforms,Panel,我想在主窗体上显示一个子窗体,周围的所有空格都有一些不透明度。我使用中提供的解决方案实现了同样的效果 现在我希望子窗体中使用的面板具有圆角。有什么帮助吗 我使用面板从下面的链接有圆角。面板具有圆角,但矩形线(在图像中高亮显示)仍然可见。有没有办法让它消失? 我找到了解决办法 在窗体上添加: this.BackColor = Color.Lime; this.TransparencyKey = Color.Lime; var hb = new HatchBru

我想在主窗体上显示一个子窗体,周围的所有空格都有一些不透明度。我使用中提供的解决方案实现了同样的效果

现在我希望子窗体中使用的面板具有圆角。有什么帮助吗

我使用面板从下面的链接有圆角。面板具有圆角,但矩形线(在图像中高亮显示)仍然可见。有没有办法让它消失?

我找到了解决办法

在窗体上添加:

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

        var hb = new HatchBrush(HatchStyle.Percent60, this.TransparencyKey);
        e.Graphics.FillRectangle(hb, this.DisplayRectangle);
在表单加载时,使面板边缘在ctrl=panel的位置为圆形

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();

现在这很棘手。在winforms中创建圆角控件并不是那么难,但是将它们与半透明窗体结合起来是很难的。我可能是用错误的方法解决了这个问题,但是当我开始做的时候,已经编写了太多的代码,我无法更改它。正确的方法可能是从中的技巧开始,创建半透明背景,然后找出一种方法来阻止透明键在拐角处显示。我目前没有时间写一个正确的答案,不过也许其他人可能会帮助我。当你需要汉斯时,他在哪里?等待你的答复…尝试删除面板中的
Base.OnPaintBackground()
调用。如果这不起作用,请告诉我,然后我会发布我的解决方案(虽然可能需要几天时间),我尝试了,但没有成功。从现在起,我将提供当前的解决方案,直到您提供一个新的解决方案。我很高兴看到它成功了,即使我没有时间发布我的解决方案。