gpt4 book ai didi

c# - 向工具条进度条添加文本

转载 作者:太空狗 更新时间:2023-10-29 21:35:56 28 4
gpt4 key购买 nike

我正在尝试向 Tool Strip Progress Bar 添加一些文本但到目前为止我一直没有成功,这是我找到的一些代码 HERE :

private void pbPrecentage(ToolStripProgressBar pb)
{
ProgressBar p = new ProgressBar();

int percent = (int)(((double)(pb.Value - pb.Minimum) /
(double)(pb.Maximum - pb.Minimum)) * 100);
using (Graphics gr = pb.CreateGraphics())
{
gr.DrawString(percent.ToString() + "%",
SystemFonts.DefaultFont,
Brushes.Black,
new PointF(pb.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Width / 2.0F),
pb.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Height / 2.0F)));
}
}

问题是 Tool Strip Progress Bar 没有 CreateGraphics 方法。所以我想知道是否有人能够成功地将文本添加到工具条进度条。

更新

好的,ToolStripProgressBar 似乎有一个进度条属性,该属性又具有 CreateGraphics 方法,但现在的问题是文本值在闪烁,我该如何解决这个问题?这是修改后的代码:

private void pbPrecentage(ToolStripProgressBar pb)
{
int percent = (int)(((double)(pb.Value - pb.Minimum) /
(double)(pb.Maximum - pb.Minimum)) * 100);

using (Graphics gr = pb.ProgressBar.CreateGraphics())
{
gr.DrawString(percent.ToString() + "%",
SystemFonts.DefaultFont,
Brushes.Black,
new PointF(pb.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Width / 2.0F),
pb.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Height / 2.0F)));
}
}

最佳答案

您遇到了一个与基于 GDI+ 的 Windows 窗体有关的非常常见的问题。用于绘制控件(以及图形等用户绘图上下文)的双缓冲标准设置已关闭。所以只需在您的表单中添加几行代码:

public Form1()
{
//Activate Double Buffering for all kind of drawing within your form
this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
}

如果你还想获得更好的图形,那么你还应该为你的绘图上下文使用 SmoothingMode:

private void pbPrecentage(ToolStripProgressBar pb)
{
int percent = (int)(((double)(pb.Value - pb.Minimum) /
(double)(pb.Maximum - pb.Minimum)) * 100);

using (Graphics gr = pb.ProgressBar.CreateGraphics())
{
//Switch to Antialiased drawing for better (smoother) graphic results
gr.SmoothingMode = SmoothingMode.AntiAlias;
gr.DrawString(percent.ToString() + "%",
SystemFonts.DefaultFont,
Brushes.Black,
new PointF(pb.Width / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Width / 2.0F),
pb.Height / 2 - (gr.MeasureString(percent.ToString() + "%",
SystemFonts.DefaultFont).Height / 2.0F)));
}
}

关于c# - 向工具条进度条添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708904/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com