WinForm 控件实现半透明效果,并可层叠显示

啥不说,先看效果


其中 直线,矩形,圆和五角星,是自定义的透明控件


其实主要代码很简单,就是设置就是重写控件的CreateParams 属性,使之背景透明

    public class CYBaseControl : Control
    {

        public CYBaseControl()
        {
            this.SetStyle(ControlStyles.SupportsTransparentBackColor |
                ControlStyles.Opaque, true);
            this.BackColor = Color.Transparent;
        }

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle = 0x20;
                return cp;
            }
        }
    }

已知问题:该类控件无法启用双缓冲,所以不适合做动态效果,闪烁会很严重;层叠控件时绘制顺序会乱掉,可能是我绘制绘制控件的时候没有做判断顺序的原因


想用好的动态效果还是有关WPF吧!

下载源码

你可能感兴趣的:(WinForm 控件实现半透明效果,并可层叠显示)