0

我做了一个很酷的进度条,中间有文字。这是我的代码:

private void timer2_Tick(object sender, EventArgs e)
{
    progressBar1.Increment(+1);
    int percent = progressBar1.Value;
    progressBar1
        .CreateGraphics()
        .DrawString(
            percent.ToString() + "%", 
            new Font("Arial", (float)8.25, FontStyle.Regular), 
            Brushes.Black, 
            new PointF(progressBar1.Width / 2 - 10, 
            progressBar1.Height / 2 - 7)
        );
    if (progressBar1.Value >= 99)
    {
        timer2.Stop();
        this.Close();
    }
}

出于某种原因,文本出现然后消失和其他奇怪的东西。为什么会这样,我该如何解决?

4

3 回答 3

0

尝试将绘图代码移动到 Paint 事件中,您基本上是在修改控件的视觉效果,因此您需要处理这个而不是默认的绘画行为。

于 2012-05-17T19:24:34.830 回答
0

每当重新绘制控件时,您的绘图就会被删除。

相反,您需要设置一个标志,指示是否立即绘制文本,然后处理该Paint事件,如果标志为真,则绘制文本。

在计时器滴答处理程序中,切换标志并调用Invalidate().

于 2012-05-17T19:25:46.340 回答
0

另一种方法是创建一个 UserControll 并在进度条顶部使用一个标签,并分别使用每个标签,这可能更容易做到,几乎不需要任何额外的代码。

于 2012-05-17T19:34:53.670 回答