使用Spectre.Console定製.NET控制檯輸出樣式演示

WeskyNet發表於2024-10-15
建立一個控制檯專案,引用包Spectre.Console。或者如果需要定製控制檯cli命令,也可以引用 Spectre.Console.Cli ,裡面自帶包含了Spectre.Console
0
先做個最簡單的輸出演示,例如下劃線、背景色、加粗等,如下圖演示所示。
0
MarkupLine對應WriteLine的效果,去掉Line,就代表沒了換行。需要實現的輸出樣式裡面,字串在兩個[]之間,樣式結束以[/]結尾。
AnsiConsole.MarkupLine("[underline green]綠色下劃線[/]");
AnsiConsole.MarkupLine("[blue on white]這是藍底白字[/]");
AnsiConsole.MarkupLine("這是正常文字");
AnsiConsole.MarkupLine("[bold]這是粗體文字[/]");

也可以輸出表格樣式,例如如下圖所示效果
0
  // 建立一個表格
  var table = new Table();

  // 設定表格的標題
  table.Title("[bold green]員工資訊表[/]");

  // 新增列(可以設定對齊方式等屬性)
  table.AddColumn(new TableColumn("[u]姓名[/]").Centered());
  table.AddColumn(new TableColumn("[u]部門[/]").Centered());
  table.AddColumn(new TableColumn("[u]職位[/]").Centered());
  table.AddColumn(new TableColumn("[u]郵箱[/]").Centered());

  // 新增行
  table.AddRow("張三", "技術部", "軟體工程師", "zhangsan@example.com");
  table.AddRow("李四", "市場部", "市場分析師", "lisi@example.com");
  table.AddRow("王五", "人力資源部", "招聘專員", "wangwu@example.com");

  // 設定表格的樣式
  table.Border(TableBorder.Rounded);
  table.BorderColor(Color.Red);
  table.Alignment = Justify.Center;

  // 顯示錶格
  AnsiConsole.Write(table);

也可以設計進度條動態效果:

            AnsiConsole.Progress()
            .Start(progress =>
            {
                // 建立一個進度條任務
                var task = progress.AddTask("[green]下載中...[/]");

                while (!task.IsFinished)
                {
                    // 更新進度條的進度
                    task.Increment(0.5);
                    Thread.Sleep(50);
                }
            });

也可以設計類似pip下載時候的動態耗時效果:

  // 使用 Status 方法來實現動態顯示
  AnsiConsole.Status()
      .Start("計時器...", ctx =>
      {
          while (true)
          {
              // 計算已經過去的時間
              TimeSpan elapsed = DateTime.Now - startTime;

              // 更新狀態文字
              ctx.Status($"耗時: [bold yellow]{elapsed.TotalSeconds:n1}[/] 秒");

              // 重新整理頻率,每200毫秒更新一次
              System.Threading.Thread.Sleep(200);
          }
      });

如果以上內容對你有幫助,歡迎轉發、點贊、評論等。謝謝! 也歡迎關注個人公眾號:【Dotnet Dancer】

參考文獻:
[1]:Spectre.Console官方開源專案地址:https://github.com/spectreconsole/spectre.console
[2]:文件地址:https://spectreconsole.net/quick-start

相關文章