前言
Winform程序看上去高级一点🎃🎃🎃,就想到加一个遮罩层(MaskLayer)。虽然Winform
没有原生的遮罩层,但是实现起来也不是很麻烦。
Winform的实现方式一般分为两种:
- 自定义控件,继承
- 新建一个假窗体来达到同样的效果
Contorl
重写来实现遮罩层
功能介绍以及代码实现
原理很简单,就是新建一个有一定透明度的空白窗体,边框样式设置为无边框,启动位置设置为手动设置(这样我们就可以顺便指定他出现的位置了),最后再给它整个遮罩背景色就万事大吉了🧨🧨🧨
MaskForm:
public partial class MaskForm : Form
{
public MaskForm(Point point, Size size
{
InitializeComponent(;
Opacity = 0.8;
BackColor = Color.LightSlateGray;
FormBorderStyle = FormBorderStyle.None;
StartPosition = FormStartPosition.Manual;
//位置和大小跟随主界面
Location = point;
Size = size;
}
private void MaskForm_FormClosed(object sender, FormClosedEventArgs e
{
Dispose(;
}
}
这样就能实现遮罩层效果了,调用也很简单,在想添加遮罩效果的Form
里面创建一个MaskForm
对象,直接Show
就可以了。举个简单的例子,比如我想在Form1
里加个遮罩效果,我加个button
点击之后就显示遮罩,然后五秒之后关闭遮罩:
private void button1_Click(object sender, EventArgs e
{
MaskForm mask = new MaskForm(this.Location, this.Size;
mask.Show(;
DateTime now = DateTime.Now;
while (now.AddSeconds(5 > DateTime.Now { }
mask.Close(;
}
进阶玩法
上面是最简单的遮罩效果使用,我们还可以来个进阶版 - 随意控制MaskForm
的显示位置、大小。显然我们可以通过实例化MaskForm
窗体的时候控制它,比我们想要个全屏的:
MaskForm mask = new MaskForm(new Point(0,0, new Size(1920,1080;
完结撒花,就这样吧,有帮助到你的话记得点个赞哈,比心💗💗💗
有疑问的话可以评论留言哈。