C# 平滑衰落控制

C# 平滑衰落控制,c#,winforms,animation,j#,C#,Winforms,Animation,J#,我试图淡出一个标签,但它似乎没有像窗体本身那样的不透明度属性 是否有其他方法使控件淡入淡出?您可以使用我的透明控件,该控件接受透明颜色并具有不透明度属性(0-100): 公共类TranspCtrl:Control { 公共布尔阻力=假; 公共bool enab=false; 私有int m_不透明度=100; 私有int-alpha; 公共交通 { 设置样式(ControlStyles.SupportsTransparentBackColor,true); SetStyle(ControlSty

我试图淡出一个标签,但它似乎没有像窗体本身那样的不透明度属性


是否有其他方法使控件淡入淡出?

您可以使用我的透明控件,该控件接受透明颜色并具有不透明度属性(0-100):

公共类TranspCtrl:Control
{
公共布尔阻力=假;
公共bool enab=false;
私有int m_不透明度=100;
私有int-alpha;
公共交通
{
设置样式(ControlStyles.SupportsTransparentBackColor,true);
SetStyle(ControlStyles.不透明,true);
this.BackColor=Color.Transparent;
}
公共整数不透明度
{
收到
{
如果(m_不透明度>100)
{
m_不透明度=100;
}
否则如果(m_不透明度<1)
{
m_不透明度=1;
}
返回此.m_不透明度;
}
设置
{
此.m_不透明度=值;
如果(this.Parent!=null)
{
Parent.Invalidate(this.Bounds,true);
}
}
}
受保护的重写CreateParams CreateParams
{
收到
{
CreateParams cp=base.CreateParams;
cp.ExStyle=cp.ExStyle | 0x20;
返回cp;
}
}
受保护的覆盖无效OnPaint(PaintEventArgs e)
{
如果(!设计模式)
{
图形g=e.图形;
矩形边界=新矩形(0,0,this.Width-1,this.Height-1);
颜色frmColor=this.Parent.BackColor;
笔刷bckColor=默认值(笔刷);
α=(m_不透明度*255)/100;
如果(拖动)
{
颜色DragBackColor=默认值(颜色);
if(背景色!=颜色.透明)
{
int Rb=BackColor.R*alpha/255+frmColor.R*(255-alpha)/255;
int Gb=BackColor.G*alpha/255+frmColor.G*(255-alpha)/255;
int Bb=BackColor.B*alpha/255+frmColor.B*(255-alpha)/255;
dragBckColor=Color.FromArgb(Rb,Gb,Bb);
}
其他的
{
dragBckColor=frmColor;
}
α=255;
bckColor=新的SolidBrush(Color.FromArgb(alpha,DragBackColor));
}
其他的
{
bckColor=newsolidbrush(Color.FromArgb(alpha,this.BackColor));
}
if(this.BackColor!=Color.Transparent |拖动)
{
g、 FillRectangle(bckColor,边界);
}
bckColor.Dispose();
g、 处置();
}
基础漆(e);
}
BackColorChanged上的受保护覆盖无效(EventArgs e)
{
如果(this.Parent!=null)
{
Parent.Invalidate(this.Bounds,true);
}
基色变化(e);
}
受保护的覆盖无效OnParentBackColorChanged(EventArgs e)
{
这个。使无效();
基。基于ParentBackColorChanged(e);
}
}

它不是标签,但您可以更改onpaint代码以绘制文本。

您可以使用接受透明颜色并具有不透明度属性(0-100)的“我的透明”控件:

公共类TranspCtrl:Control
{
公共布尔阻力=假;
公共bool enab=false;
私有int m_不透明度=100;
私有int-alpha;
公共交通
{
设置样式(ControlStyles.SupportsTransparentBackColor,true);
SetStyle(ControlStyles.不透明,true);
this.BackColor=Color.Transparent;
}
公共整数不透明度
{
收到
{
如果(m_不透明度>100)
{
m_不透明度=100;
}
否则如果(m_不透明度<1)
{
m_不透明度=1;
}
返回此.m_不透明度;
}
设置
{
此.m_不透明度=值;
如果(this.Parent!=null)
{
Parent.Invalidate(this.Bounds,true);
}
}
}
受保护的重写CreateParams CreateParams
{
收到
{
CreateParams cp=base.CreateParams;
cp.ExStyle=cp.ExStyle | 0x20;
返回cp;
}
}
受保护的覆盖无效OnPaint(PaintEventArgs e)
{
如果(!设计模式)
{
图形g=e.图形;
矩形边界=新矩形(0,0,this.Width-1,this.Height-1);
颜色frmColor=this.Parent.BackColor;
笔刷bckColor=默认值(笔刷);
α=(m_不透明度*255)/100;
如果(拖动)
{
颜色DragBackColor=默认值(颜色);
if(背景色!=颜色.透明)
{
int Rb=BackColor.R*alpha/255+frmColor.R*(255-alpha)/255;
int Gb=BackColor.G*alpha/255+frmColor.G*(255-alpha)/255;
int Bb=BackColor.B*alpha/255+frmColor.B*(255-alpha)/255;
dragBckColor=Color.FromArgb(Rb,Gb,Bb);
}
其他的
{
dragBckColor=frmColor;
}
   public class TranspCtrl : Control
    {
        public bool drag = false;
        public bool enab = false;
        private int m_opacity = 100;

        private int alpha;
        public TranspCtrl()
        {
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
            SetStyle(ControlStyles.Opaque, true);
            this.BackColor = Color.Transparent;
        }

        public int Opacity
        {
            get
            {
                if (m_opacity > 100)
                {
                    m_opacity = 100;
                }
                else if (m_opacity < 1)
                {
                    m_opacity = 1;
                }
                return this.m_opacity;
            }
            set
            {
                this.m_opacity = value;
                if (this.Parent != null)
                {
                    Parent.Invalidate(this.Bounds, true);
                }
            }
        }

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

        protected override void OnPaint(PaintEventArgs e)
        {
            if (!DesignMode)
            {
                Graphics g = e.Graphics;
                Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1);

                Color frmColor = this.Parent.BackColor;
                Brush bckColor = default(Brush);

                alpha = (m_opacity * 255) / 100;

                if (drag)
                {
                    Color dragBckColor = default(Color);

                    if (BackColor != Color.Transparent)
                    {
                        int Rb = BackColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255;
                        int Gb = BackColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255;
                        int Bb = BackColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255;
                        dragBckColor = Color.FromArgb(Rb, Gb, Bb);
                    }
                    else
                    {
                        dragBckColor = frmColor;
                    }

                    alpha = 255;
                    bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor));
                }
                else
                {
                    bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor));
                }

                if (this.BackColor != Color.Transparent | drag)
                {
                    g.FillRectangle(bckColor, bounds);
                }

                bckColor.Dispose();
                g.Dispose();
            }
            base.OnPaint(e);
        }

        protected override void OnBackColorChanged(EventArgs e)
        {
            if (this.Parent != null)
            {
                Parent.Invalidate(this.Bounds, true);
            }
            base.OnBackColorChanged(e);
        }

        protected override void OnParentBackColorChanged(EventArgs e)
        {
            this.Invalidate();
            base.OnParentBackColorChanged(e);
        }
    }