一個庫幫你輕鬆的建立漂亮的.NET控制檯應用程式

China Soft發表於2024-04-29

前言

做過.NET控制檯應用程式的同學應該都知道原生的.NET控制檯應用程式輸出的內容都比較的單調,假如要編寫漂亮且美觀的控制檯輸出內容或者樣式可能需要花費不少的時間去編寫程式碼和除錯。今天大姚給大家分享一個.NET開源且免費的類庫幫你輕鬆的建立漂亮、美觀的.NET控制檯應用程式:Spectre.Console。

專案特性

  • 該庫有著豐富的元件,其中包括表格、網格、皮膚、日曆、以及畫布影像等。
  • 支援文字樣式的最常見的 SRG 引數,如粗體、暗淡、斜體、下劃線、刪除線和閃爍文字。
  • 支援終端中的3/4/8/24位顏色。該庫將檢測當前終端的功能,並根據需要降低顏色。

專案原始碼

新建控制檯應用

建立一個名為:SpectreExercise的控制檯應用。

安裝專案的NuGet包

在NuGet包管理器中搜尋:Spectre.Console 點選安裝。

控制檯文字輸出

原生自帶的

Console.WriteLine("你好追逐時光者!!!");

類庫設定的

AnsiConsole.Markup("[underline red]你好[/][Blue]追逐時光者[/][DarkMagenta]!!![/]");

類庫文件顏色選擇表:https://spectreconsole.net/appendix/colors

table表格輸出

            #region 建立表
            // 建立表
            var table = new Table();

            //新增一些列
            table.AddColumn("[red]編號[/]");
            table.AddColumn("[green]姓名[/]");
            table.AddColumn("[blue]年齡[/]");

            //新增一些行
            table.AddRow("1", "追逐時光者", "20歲");
            table.AddRow("2", "大姚", "22歲");
            table.AddRow("3", "小袁", "18歲");
            table.AddRow("4", "小明", "23歲");

            // 將表格渲染到控制檯
            AnsiConsole.Write(table);
            #endregion

條形圖

使用 BarChart 將條形圖呈現到控制檯。

            #region 條形圖

            AnsiConsole.Write(new BarChart()
    .Width(60)
    .Label("[green bold underline]水果數量[/]")
    .CenterLabel()
    .AddItem("蘋果", 12, Color.Yellow)
    .AddItem("西瓜", 54, Color.Green)
    .AddItem("香蕉", 33, Color.Red)
    .AddItem("芒果", 55, Color.Blue));

            #endregion

日曆

            //日曆
            var calendar = new Calendar(2024, 5);
            AnsiConsole.Write(calendar);

佈局

使用 Layout 在終端中佈局小部件。

#region 佈局

// Create the layout
var layout = new Layout("Root")
    .SplitColumns(
        new Layout("Left"),
        new Layout("Right")
            .SplitRows(
                new Layout("Top"),
                new Layout("Bottom")));

// Update the left column
layout["Left"].Update(
    new Panel(
        Align.Center(
            new Markup("[blue]你好![/]"),
            VerticalAlignment.Middle))
        .Expand());

// Render the layout
AnsiConsole.Write(layout);

#endregion

規則水平線

            var rule = new Rule("[red]Hello[/]");
            AnsiConsole.Write(rule);

            var ruleLeft = new Rule("[blue]Hello[/]");
            ruleLeft.Justification = Justify.Left;
            AnsiConsole.Write(ruleLeft);

            var ruleRight = new Rule("[yellow]Hello[/]");
            ruleRight.Justification = Justify.Right;
            AnsiConsole.Write(ruleRight);

專案原始碼地址

更多專案實用功能和特性歡迎前往專案開源地址檢視👀,別忘了給專案一個Star支援💖。

  • GitHub開源地址:https://github.com/spectreconsole/spectre.console
  • 線上文件:https://spectreconsole.net/quick-start

優秀專案和框架精選

該專案已收錄到C#/.NET/.NET Core優秀專案和框架精選中,關注優秀專案和框架精選能讓你及時瞭解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的專案和框架不被埋沒🤞)。

  • https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

DotNetGuide技術社群交流群

  • DotNetGuide技術社群是一個面向.NET開發者的開源技術社群,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和諮詢、專案框架推薦、求職和招聘資訊、以及解決問題的平臺。
  • 在DotNetGuide技術社群中,開發者們可以分享自己的技術文章、專案經驗、學習心得、遇到的疑難技術問題以及解決方案,並且還有機會結識志同道合的開發者。
  • 我們致力於構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能為您提供更多的價值和成長機會。

相關文章