我已经制作了一个很酷的进度条,其中间有文字。这是我的代码:
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();
}
}
由于某种原因,文本显示然后消失和其他奇怪的东西。为什么会这样,我该如何解决?
答案 0 :(得分:0)
尝试将绘图代码移动到Paint事件中,您基本上是在修改控件的视觉效果,因此您需要处理此操作而不是默认的绘制行为。
答案 1 :(得分:0)
每当重新绘制控件时,您的绘图都会被删除。
相反,您需要设置一个标志,指示是否立即绘制文本,然后处理Paint
事件,如果标志为true,则绘制文本。
在计时器标记处理程序中,切换标记并调用Invalidate()
。
答案 2 :(得分:0)
另一种方法是创建一个UserControll并在进度条顶部使用一个标签,并单独使用它们,这可能更容易做到,几乎不需要任何额外的代码。