定时器背景转换

时间:2015-06-10 17:26:39

标签: c# winforms timer background-image

当我按下带有转换的按钮时,我试图让我的表单背景发生变化。

我认为最简单快捷的方法是将白色面板放在我的Form上,背面为空白,并在点击按钮时将其alpha分量从0更改为250然后从250更改为0 。 当alpha达到其最大值时,我想更改背景图像。 这种技术就像一小时前一样,但现在颜色根本没有变化,我的代码也没有完全执行。 这是Timer调用的函数:

private void ChangeIndex(object sender, EventArgs e)    
{
    if (progressBar.Value == progressBar.Maximum-progressBar.Step)
    {
        t.Stop();

        btnDébut.Enabled = true;
        btnFin.Enabled = true;
        btnPrécédent.Enabled = true;
        btnSuivant.Enabled = true;

        if (indiceCourant >= dt.Rows.Count)
        {
            this.indiceCourant = 0;
        }

        lblChargement.Visible = false;
        progressBar.Visible = false;
        RemplitChamps(indiceCourant);
    }

    progressBar.Step = 10;
    progressBar.Maximum = 200;
    progressBar.PerformStep();

    MessageBox.Show(progressBar.Value.ToString() + " " + pnlFondEcran.BackColor.A.ToString() + " " + progressBar.Maximum.ToString());

    if(progressBar.Value <100)
    {
        this.pnlFondEcran.BackColor = System.Drawing.Color.FromArgb(pnlFondEcran.BackColor.A + progressBar.Maximum/progressBar.Step,255, 255,255);
        // i wanna add 24 each time, until alpha=240
    }             
    else
    {
        MessageBox.Show("error");
        this.pnlFondEcran.BackColor = System.Drawing.Color.FromArgb(pnlFondEcran.BackColor.A -progressBar.Maximum / progressBar.Step, 255, 255, 255);
        //then substract 24 each time
    }
}

Panel的名字是pnlFondEcran。 进度条工作正常。 MessageBox.Show(some stuff )&#39; s ouptpur是0,20,40 ...到200,0,200。 在调用函数的第一次调用之前,progressBar.Value<100语句永远不会被计算,我不知道为什么。

这是调用ChangeIndex()的方法:

private void DebutTimer()//lance le timer pour la progressbar
{
    lblChargement.Visible = true;
    progressBar.Visible = true;

    progressBar.Value = 0;
    //gestion du timer
    t = new System.Windows.Forms.Timer();
    t.Interval = 150;
    t.Enabled = true;
    t.Tick += new EventHandler(ChangeIndex);
    t.Start();
    //gestion des boutons
    btnDébut.Enabled = false;
    btnFin.Enabled = false;
    btnPrécédent.Enabled = false;
    btnSuivant.Enabled = false;
}

0 个答案:

没有答案