跳至頁尾內容
Iron Academy Logo
C#應用程式
C#應用程式

其他類別

內容面板和呼叫 - Spectre Console 系列

[[academy-video-youtube({"vid": "BTrqp1AoTe8", "start_time": "0", "title": "Content Panels and Callouts - Spectre Console Series", "creator": "Tim Corey", "length": "7m 51s"})]]

Spectre.Console是一個NuGet套件,使.NET開發者能夠建立視覺上豐富的控制台應用程式。 在他的Spectre Console系列中,Tim Corey展示了如何使用互動提示、表格、進度顯示等功能來將普通的控制台窗口轉變成更專業的作品。

在這篇文章中,我們將通過Tim Corey的影片"內容面板和提示——Spectre Console系列",進一步深入了解Spectre Console面板功能。使用Tim的範例,我們將學習如何建立面板,探索其特點,並在控制台的可用空間內,以不同風格顯示資料。

建立一個基本的Spectre Console面板

Tim在影片開頭(0:00)提醒大家,Spectre.Console允許您將C#控制台應用程式變成視覺吸引人且資訊豐富的應用程式。 在這一課程中(0:15),我們將建立面板,這些面板可以根據您的需要作為簡單的提示甚至小型表格。

0:34時,Tim在Visual Studio直接寫一個範例。 他展示如何建立一個新面板實例:

var panel = new("Tim Corey");
AnsiConsole.Write(panel);
var panel = new("Tim Corey");
AnsiConsole.Write(panel);

他注意到(0:47)AnsiConsole.Write()接受一個可渲染的物件,而由於Panel實作了IRenderable介面,所以很適合。 1:02時運行程式碼,顯示一個簡單的框,圍繞著"Tim Corey"的文字。即使是這麼小的空間也可用來提示、強調提示或將使用者輸入與其他控制台輸出分隔。

Spectre Console Content Panels Callouts 1 related to 建立一個基本的Spectre Console面板

探索面板特點:邊框和內邊距

然後Tim繼續展示面板的特性。 1:22時他調整邊框樣式:

panel.Border = BoxBorder.Rounded;
panel.Border = BoxBorder.Rounded;

這使面板擁有圓角邊框——這是不同樣式中的一種。 他指出,您也可以選擇雙邊框或其他選項,以配合自定義顏色主題或藍綠色調。

1:42時,Tim調整面板內部的內邊距:

panel.Padding = new(2, 0);
panel.Padding = new(2, 0);

他解釋(2:16)內邊距在控制台中不如網頁上的像素——它基於字元寬度和行回車。 像5這樣的大數字會創造一個大面板,佔據許多可用空間。 他數著空間以展示內邊距如何工作(2:35)。

這種微調內容周圍空間的能力可以設計與布局匹配的面板,無論是顯示變數表、條形圖還是其他資料。

新增標題和自定義樣式

3:37時,Tim為面板新增了一個標題:

panel.Header("My Name");
panel.Header("My Name");

3:51時當他運行程式碼,標題出現在邊框中。 但它貼近內容。 他在4:04時通過改變內邊距來解決這個問題:

panel.Padding = new (1, 0);
panel.Padding = new (1, 0);

這創造了標題和文字之間的小空間。 Tim指出(4:16)標題和空間的運用讓您能清楚地標籤面板——在顯示任務進度、現場顯示甚至顯示進度條的長時間任務時非常有用。

在面板中顯示列表

然後Tim展示如何將字串列表放入面板。 4:26時,他從上一課程中引入一個名稱列表並顯示如何將其合併為單一字串:

string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
    .Header("Default Names");
string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
    .Header("Default Names");

這將列表合併成一個有換行的字串(5:02)。 5:28時運行它,將列表整齊地顯示在面板內,每個項目都在自己的一行上。這種技術讓您能以強型別方式呈現資料或物件屬性,但呈現為文字。

Spectre Console Content Panels Callouts 2 related to 在面板中顯示列表

Tim還強調(5:44)您可以使用豐富的文字標記新增自定義顏色到特定項目。 例如:

"[red]Bilbo Baggins[/]"
"[red]Bilbo Baggins[/]"

這展示了Spectre Console面板如何處理不僅是普通字串,還有樣式化內容,支持主題、粗體文字或顏色編碼項目。

Spectre Console Content Panels Callouts 3 related to 在面板中顯示列表

使用標記和可渲染物件將內容置中

6:19時,Tim回答如何將內容置中的問題。 普通字串不會置中。 相反,您必須使用可渲染物件。 他在6:34時展示:

Panel panel = new(new Markup(panelInfo).Centered());
Panel panel = new(new Markup(panelInfo).Centered());

這將字串轉換成Markup,調用.Centered(),並分配給面板。 運行程式碼(7:01)顯示所有名稱居中。 這特別有用,如果您正在建立新表格、新條形圖或任何互動控制,並想讓內容在可用空間中水平對齊。

Spectre Console Content Panels Callouts 4 related to 使用標記和可渲染物件將內容置中

Tim還指出(7:07)面板是IRenderable,所以您可以將它們巢狀在表格或其他面板中。 這使得構建複合顯示成為可能:例如,一個面板包含提示、一個變數表和一個條形圖並排,或使用面板顯示不同任務的文件進度。

作為控制台應用的構建模塊的面板

當Tim結束時(7:14),他重申面板是IRenderable,這意味著您可以將它們插入到Spectre.Console期望有可渲染物件的任何地方——無論是表格內、現場顯示中還是其他佈局中。 這種靈活性使您能夠將面板與其他Spectre.Console組件結合,如互動提示、顯示進度條和自定義顏色主題,建立精緻的.NET控制台應用程式。

從Tim的影片中學到的要點

  • Spectre Console面板是一種簡單但強大的方法,可用於在您的控制台應用程式中突出顯示內容、提示使用者輸入或框架資料。

  • 面板支持不同樣式:圓角、雙重、自定義標題和內邊距以控制空間。

  • 您可以顯示列表,使用豐富的文字標記進行自定義顏色主題,甚至使用Markup.Centered()將內容置中。

  • 因為面板是一個可渲染物件,您可以將其嵌入到表格中,與進度顯示或條形圖結合,並構建複雜的互動佈局。

  • 所有這些僅需安裝NuGet套件,並在您的.NET或Visual Studio專案中使用其強型別API即可。

通過觀看Tim Corey的影片,您可以自信地開始使用Spectre.Console面板來建立精緻、資料豐富的控制台體驗,具有標題、自定義主題和整齊排版的輸出——都不離開控制台的世界。

Hero Worlddot related to 內容面板和呼叫 - Spectre Console 系列
Hero Affiliate related to 內容面板和呼叫 - Spectre Console 系列

分享您所愛以賺取更多報酬

您是否為使用 .NET、C#、Java、Python 或 Node.js 的開發者建立內容?將您的專業知識轉化為額外收入!

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話