进度条绘制方法
本文关键字:方法 绘制 | 更新日期: 2023-09-27 18:34:27
好的,这是我在进度条上绘制的代码:
private void timer2_Tick(object sender, EventArgs e)
{
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));
progressBar1.Increment(+1);
if (progressBar1.Value >= 99)
{
timer2.Stop();
this.Close();
}
好的,所以我在中间画了一个标签,它将显示进度条的值。出于某种原因,它一直在闪烁。消失又重新出现。所以,有人告诉我把那个代码拿出来,放在油漆方法中......我看不出来。有没有更简单的方法?
这是一个应该可以工作的代码(我使用了选项 3,创建了一个子类并覆盖 WndProc 来处理绘制消息:
public class Prog : ProgressBar
{
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x000F)
{
var flags = TextFormatFlags.VerticalCenter |
TextFormatFlags.HorizontalCenter |
TextFormatFlags.SingleLine |
TextFormatFlags.WordEllipsis;
TextRenderer.DrawText(CreateGraphics(),
((float)this.Value/this.Maximum*100) + "%",
Font,
new Rectangle(0, 0, this.Width, this.Height),
Color.Black,
flags);
}
}
}
您也可以使用 ProgressBarRenderer 自己完成整个绘图。