我碰巧正在尝试执行以下操作:
带有白色背景颜色的半透明半菜单,但是例如,如果您单击某个选项(如果已选中),它将变为完全透明,允许您通过它查看背景图像。
在图像中,选择了Label1选项,其中标签框必须是透明的,Label1
必须继续显示,面板的其余部分必须继续使用其相应的半透明白色...
为达到这个目的,我首先尝试在Form
上绘制两个框,但事实证明,从来没有绘制透明框:
public partial class Form1 : Form
{
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var brush = new SolidBrush(Color.FromArgb(25, Color.White));
e.Graphics.FillRectangle(brush, new Rectangle(0, 0, 50, this.Height));
var brush2 = new SolidBrush(Color.Transparent);
e.Graphics.FillRectangle(brush2, new Rectangle(0, 50, 50, 20));
}
}
除了前面的问题外,此方法的另一个问题是,每当我要移动透明位置框时,都将被迫使用this.Invalidate();
然后我决定使用面板:
public partial class Form1 : Form
{
protected override void OnLoad(EventArgs ev)
{
base.OnLoad(ev);
this.panel1.Paint += (s, e) =>
{
var brush = new SolidBrush(Color.FromArgb(25, Color.White));
e.Graphics.FillRectangle(brush, new Rectangle(0, 0, 50, this.Height));
var brush2 = new SolidBrush(Color.Transparent);
e.Graphics.FillRectangle(brush2, new Rectangle(0, 50, 50, 20));
};
}
}
但是...结果是相同的...
总而言之,所选选项必须是完全透明的,以便可以看到背景图像,但标签仍可见,其余选项必须是半透明的白色。
我该怎么做?