3

我目前正在开发用于游戏制作的 TileEditor 软件。几乎一切都进行得很顺利。这就是问题所在。

我非常努力地实现了这一目标,但没有任何成功。让我们从 WinForm 的屏幕截图开始。

没有黑色方块的应用程序截图 您可能已经了解了该应用程序的工作方式。

所以,我想在整个表单上绘制一个半透明的黑色矩形,除了 Tile 选择面板(右侧面板)。我已经有了找到矩形正确点和位置的功能,这样它就不会出现在右侧面板上。

虽然当我尝试绘制它时,它是在控件下方绘制的。有没有办法在这种形式的所有内容之上绘制矩形?

(Photoshoped) 表格上方的黑色矩形 非常感谢您的宝贵时间,真的很感激。抱歉英语不好,这不是我的第一语言。

4

2 回答 2

3

做到这一点的最简单方法可能是拥有一个独立的、无边框、半透明的表格,并在您的设计表格上漂浮着烟熏玻璃效果。禁用它,以便鼠标点击等进入底层表单。

(你的英语很好)。

于 2012-07-20T22:57:30.980 回答
1

您可以在下面创建控件,该控件创建底层控件的图像,然后在其上使用半透明的黑色矩形对其进行绘制。您可以将其放置在表单上要变暗的控件上方以及要保持亮起的控件下方。然后,您可以根据需要设置它的可见性。

    class OverlayShadow : Control
    {
        protected override void OnPaint(PaintEventArgs e)
        {
            if (Parent != null) {
                Bitmap behind = new Bitmap(Parent.Width, Parent.Height);
                foreach (Control c in Parent.Controls)
                    if (c.Bounds.IntersectsWith(this.Bounds) & c != this)
                        c.DrawToBitmap(behind, c.Bounds);
                e.Graphics.DrawImage(behind, -Left, -Top);
                behind.Dispose();
            }
            e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(128, 0, 0, 0)), Bounds);
        }
    }
于 2012-07-20T23:18:54.500 回答