Console.WriteLine("now show");
ConsolePareToolBar c = new ConsolePareToolBar("100MB");
for (int i = 0; i < 100; i = i + 3)
{
c.showPareToolBar(i);
System.Threading.Thread.Sleep(100);
}
Console.WriteLine("");
Console.WriteLine("ok");
Console.Read();
class ConsolePareToolBar
{
public ConsolePareToolBar(string str)
{
this.str = str;
Console.SetCursorPosition(0, cursorTop);
for (int i = 0; i < Console.WindowWidth; i++) //清除一条
{
Console.Write(" ");
}
//第一行信息
Console.SetCursorPosition(0, cursorTop);
//第二行绘制进度条背景
Console.BackgroundColor = ConsoleColor.DarkCyan;
for (int i = 0; ++i <= 50; )
{
Console.Write(" ");
}
Console.BackgroundColor = colorBack;
Console.Write(" "); Console.Write(" 0%");
Console.Write(" ");
Console.Write(this.str);
}
private ConsoleColor colorBack = Console.BackgroundColor;
private ConsoleColor colorFore = Console.ForegroundColor;
private string str = "";
private int curPare = 0;
private int cursorTop = Console.CursorTop;
public void showPareToolBar(int per)
{
//curPare++;
if(per < curPare)
{
return;
}
//第三行输出进度
//-----------------------上面绘制了一个完整的工作区域,下面开始工作
Console.BackgroundColor = ConsoleColor.Yellow;//设置进度条颜色
Console.SetCursorPosition(curPare / 2, cursorTop);//设置光标位置,参数为第几列和第几行
for (int i = curPare / 2; i < per / 2; i++)
{
Console.Write(" ");//移动进度条
}
curPare = per;
Console.BackgroundColor = colorBack;//恢复输出颜色
//更新进度百分比,原理同上.
Console.ForegroundColor = ConsoleColor.Green;
Console.SetCursorPosition(50 + 1, cursorTop);
Console.Write(" ");
Console.SetCursorPosition(50 + 1, cursorTop);
Console.Write("{0}%", curPare.ToString("000"));
Console.ForegroundColor = colorFore;
//Console.SetCursorPosition(0, cursorTop);
}
}