我创建了一个透明的窗体,在窗体上有几行文字,想实现其中的一行文字逐渐消失的效果。怎么弄啊?

解决方案 »

  1.   

            private void button4_Click(object sender, EventArgs e)
            {
                Label label = label1;
                label.Visible = false;
                Graphics g = this.CreateGraphics();
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
                //sf.Alignment = label.TextAlign...;必要的话在这里判断位置
                for (int i = 0; i < 255; i++)
                {
                    using (Brush brush = new SolidBrush(Color.FromArgb(i, i, i)))
                    {
                        Application.DoEvents();
                        System.Threading.Thread.Sleep(10);
                        g.DrawString(label.Text, label.Font, brush, new Rectangle(label.Location, label.Size), sf);
                    }
                }
                this.Refresh();
            }
      

  2.   

    private void button4_Click(object sender, EventArgs e)
            {
                Label label = label1;
                label.Visible = false;
                Graphics g = this.CreateGraphics();
                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                StringFormat sf = new StringFormat(StringFormat.GenericTypographic);
                //sf.Alignment = label.TextAlign;必要的话在这里判断位置
                switch(label1.TextAlign)//不加对齐方式的判断的话,会感觉文字的跳跃
                {
                    case ContentAlignment.BottomCenter:
                        sf.Alignment = StringAlignment.Center;
                        sf.LineAlignment = StringAlignment.Far;
                        break;
    //                case .....
    //                 break;
                }
                for (int i = 0; i < 255; i++)
                {
                    using (Brush brush = new SolidBrush(Color.FromArgb(i, i, i)))
                    {
                        Application.DoEvents();
                        System.Threading.Thread.Sleep(10);
                        g.DrawString(label.Text, label.Font, brush, new Rectangle(label.Location,new Size(label.Width-1,label.Height-1)), sf);
                    }
                }
                this.Refresh();
            }