透明的panel,可用用作遮罩层。
using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WinFormsApp1 { public class TransparentPanel : Panel { private const int WS_EX_TRANSPARENT = 0x20; public TransparentPanel() { SetStyle(ControlStyles.Opaque, true); } private int opacity = 1; [DefaultValue(1)] public int Opacity { get { return this.opacity; } set { if (value < 0 || value > 100) throw new ArgumentException("value must be between 0 and 100"); this.opacity = value; } } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle = cp.ExStyle | WS_EX_TRANSPARENT; return cp; } } protected override void OnPaint(PaintEventArgs e) { using (var brush = new SolidBrush(Color.FromArgb(this.opacity * 255 / 100, this.BackColor))) { e.Graphics.FillRectangle(brush, this.ClientRectangle); } base.OnPaint(e); } } }
标签:opacity,透明,c#,CreateParams,System,value,using,cp,Panel From: https://www.cnblogs.com/zjfree/p/18421090