自动不透明度改变在Windows应用程序

本文关键字:Windows 应用程序 改变 不透明度 | 更新日期: 2023-09-27 18:17:00

我试着让我的windows窗体应用程序改变不透明度从1到0(不可见的形式),然后从0不透明度到1(正常,可见的形式),当我按下按钮。

每个不透明度变化步骤都与计时器相连。它会改变不透明度(-/+0,10)在每个timer1_tick。

不透明度= 1 (100%)

现在我有了这样的内容:

public partial class Form1 : Form
{
    double OpacityStep; 
    public Form1()
    {
        OpacityStep = 0.10; 
        InitializeComponent();
        updateButton1(); 
        updateButton2();
    }
    private void updateButton1() 
    {
        if (Opacity < 1.00) button1.Enabled = true; 
        else 
        {
            button1.Enabled = false;
        }
    }
    private void updateButton2()
    {
        if (Opacity > 0.0) button2.Enabled = true;
        else 
        {
            button1.Focus(); 
            button2.Enabled = false;
        }
    }
    private void button1_Click(object sender, EventArgs e)
    {
        double NewOpacity = Opacity + OpacityStep; 
        if (NewOpacity > 1.0) Opacity = 1.0; 
        else Opacity = NewOpacity;
        updateButton2(); 
        updateButton1();
    }
    private void button2_Click(object sender, EventArgs e)
    {
        double NewOpacity = Opacity - OpacityStep;
        if (NewOpacity < 0.0) Opacity = 0.0; 
        else Opacity = NewOpacity;
        updateButton1();
        updateButton2();
    }
    private void button3_Click(object sender, EventArgs e) // app start
    {
        this.timer1.Interval = 1000;
        this.timer1.Enabled = true;
    }
    private void timer1_Tick(object sender, EventArgs e)
    {   
        button2_Click(sender, e);
    }
}

这段代码使我的应用程序不可见,但如何使它回到可见(不透明度= 1)??div ?

"我试着让我的windows窗体应用程序改变不透明度从1到0(不可见的形式),然后从0不透明度到1(正常,可见的形式),当我按下按钮。"

听起来很清楚:

public partial class Form1 : Form
{
    double OpacityStep = 0; 
    public Form1() 
    {            
        InitializeComponent();
        timer1.Interval = 100;
        timer1.Enabled = false;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        button1.Enabled = false;
        this.Opacity = 1;
        OpacityStep = -0.10;
        timer1.Start();
    }
    private void timer1_Tick(object sender, EventArgs e)
    {
        double NewOpacity = Opacity + OpacityStep;
        if (NewOpacity <= 0)
        {
            NewOpacity = 0;
            OpacityStep = 0.10;
        }
        else if(NewOpacity >= 1 && OpacityStep  > 0)
        {
            NewOpacity = 1.0;
            button1.Enabled = true;
            timer1.Stop();
        }
        this.Opacity = NewOpacity;
    }
}

编辑:"如果我需要循环这个(不透明度从1到0,从0到1,在循环中),我应该在这个代码中改变什么?"

带for循环:

    private void button1_Click(object sender, EventArgs e)
    {
        button1.Enabled = false;
        // fade out:
        this.Opacity = 1.0;
        for (double opacity = 1.0; opacity >= 0.0; opacity = opacity - .1)
        {
            System.Threading.Thread.Sleep(100);
            this.Opacity = opacity;
            Application.DoEvents();
        }
        // fade in:
        this.Opacity = 0.0;
        for (double opacity = 0.0; opacity <= 1.0; opacity = opacity + .1)
        {
            System.Threading.Thread.Sleep(100);
            this.Opacity = opacity;
            Application.DoEvents();
        }
        this.Opacity = 1.0;
        button1.Enabled = true;
    }

自动不透明度改变在Windows应用程序