当进度条开始加载时,为什么我的进度条百分比文本会消失? 我错过了什么吗?
int percent = (int)(((double)(progressBar1.Value - progressBar1.Minimum) /
(double)(progressBar1.Maximum - progressBar1.Minimum)) * 100);
using (Graphics gr = progressBar1.CreateGraphics())
{
gr.DrawString(percent.ToString() + "%",
SystemFonts.DefaultFont,
Brushes.Black,
new PointF(progressBar1.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Width / 2.0F),
progressBar1.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Height / 2.0F)));
答案 0 :(得分:0)
要在winforms控件之上绘图,您需要绑定到控件的OnPaint事件并在该事件处理程序中执行绘图。
控件在不同时间重新绘制,例如在调整表单大小时或在更新进度值的情况下。重新绘制控件后会触发此事件。
正如其他人所提到的,如果你试图在另一个时间使用winforms控件,那么在重新绘制控件时它可能会被覆盖。
OnPaint事件提供的PaintEventArgs对象有一个你应该用来绘制的Graphics对象(而不是你使用的CreateGraphics()方法)。