跳過到頁腳內容
Iron Academy Logo
C# 應用程式
C# 應用程式

其他分類

顏色和樣式及可重用性 - Spectre Console系列

Tim Corey
9m 57s

Spectre Console 是一個強大的 NuGet 套件,用於 .NET,允許開發者將純粹的控制台應用程式轉換為視覺豐富的體驗。 通過結合 Spectre Console 的顏色、文字裝飾和可重用的樣式,您可以將普通的控制台輸出升級為資訊豐富且精緻的內容。

在他的影片"Colors and Styles and Reusability – Spectre Console Series" 中,Tim Corey 逐步講解如何做到這一點。 在這篇文章中,我們將逐步討論 Tim 所提出的相同要點,並指出時間戳記,好讓您同步觀看。 這是一個很好的方式來了解如何創建和自定義顏色、樣式類,甚至是新的重復使用的樣式。

Spectre Console 格式化介紹

在 0:00,Tim 解釋說 Spectre Console "允許您將控制台應用程式轉換為視覺上吸引人且資訊豐富的應用程式。" 他指出這個系列將程式庫分解成小塊,以便開發者能一次專注於一個功能。

他指出說明中的源代碼連結,並邀請用戶訂閱他的頻道。 此課程重點介紹如何在控制台輸出中設置和返回格式化文本,以及如何在您的程式中反覆使用這些格式。

使用內嵌標記和 MarkupLine

在 0:36,Tim 開始演示 AnsiConsole.MarkupLine 和 AnsiConsole.Markup。這些方法使您能夠直接在字串表示中嵌入顏色和裝飾。

如 Tim 在 0:51 解釋,Markup 並不自動插入新行,而 MarkupLine 則會—"這有點像 Console.Write 和 WriteLine 之間的區別。" 當您希望在多行中顯示多個項目或列表時,這種不同就顯得重要。

他鍵入 [red]這是內嵌標記[/],並執行以顯示紅色字串。 接著,在 1:38 時,他演示前景色和背景色——"紅色在白色上"——使用戶可以看到紅色文字在白色背景上。 到了 2:05,他增加了加粗作為裝飾。

Tim 在 2:18 指出,內嵌標記對於小動作既快又簡單,但"當您希望在功能間擁有更多結構化或可重用的樣式時,這就不太合適了。"

Spectre Console Colors Styles Reusability 1 related to 使用內嵌標記和 MarkupLine

創建預設樣式類

在 2:32,Tim 顯示如何創建一個樣式類的實例以便重複使用。 他寫道:

var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);
var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);

此處,Tim 正在分配一個稱為 dangerStyle 的變量,其中包含紅色前景、白色背景和加粗裝飾的新樣式。 他還在 3:26 時指出,您不必填寫每個參數——您可以根據需要選擇僅前景色或僅裝飾。

這種基於類的方式使您能在一個地方更新您的樣式,並在渲染文本時始終如一地應用它,而不是反覆使用標記標籤。

應用新標記的樣式

在 3:48,Tim 顯示如何應用該樣式。 由於 AnsiConsole.WriteLine 無法直接接受樣式,因此您必須使用 AnsiConsole.Write 和一個新的標記物件:

AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));
AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));

在 4:08,他解釋說 WriteLine 僅接受字串或簡單類型,但 Write 有一個重載可以接受 IRenderable 物件。 這就是為什麼您將樣式傳遞給新的標記,然後編寫它。

Tim 在 4:45 說明這種語法"工作量有點多",但它是顯示樣式文本的官方方式。 他甚至建議如果您常這麼做,可以創建自己的方法來簡化它。

Spectre Console Colors Styles Reusability 2 related to 應用新標記的樣式

處理換行和光標位置

在執行代碼後,Tim 在 5:44 指出,光標停留在樣式文字的同一行。 那是因為 Write 不包含新行。在 6:07,他顯示如何通過在字串中添加 \n 來解決此問題,以便將光標下移。

這個小技巧可確保您的輸出與預期相符——在構建大型控制台應用程式時尤為重要,因為用戶輸入或數據會在樣式提示後呈現。

添加多個裝飾

接下來 Tim 演示了如何結合裝飾。 在 6:27,他說,"如果您想應用多個裝飾怎麼辦?" 比如,我也想應用斜體。您可以使用一個管道符將裝飾分開。

他說明您可以從一長串裝飾中選擇——加粗、斜體、刪除線、下劃線、弱化、反轉、閃爍——甚至在 7:05 提到 Windows PowerShell 和 Windows Terminal 的支持。目前,慢速閃爍和快速閃爍在 Windows Terminal 中看起來是一樣的。

到 7:29,他再次運行代碼,並在加粗的基礎上應用了斜體化。 "您可以隨心所欲地混合搭配這些,"Tim 在 7:49 時說,創建您可以反覆應用的樣式。

這是一個強大的功能,當您想用紅色突出顯示錯誤、用綠色顯示成功訊息、用黃色警告,或用藍色、紫色、蘭花色甚至栗色顯示自定義標籤時,Spectre Console 支持全套 RGB 顏色。

結合內嵌和預設樣式

在 8:02,Tim 演示如何結合寫入和不同樣式的寫入。 您可以多次調用 AnsiConsole.Write,首先是您的樣式文本,然後是未樣式化或不同樣式的文本,突出顯示行的一部分。他顯示:

AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");
AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");

如 Tim 在 8:37 解釋,這就是為什麼使用 Write 而不是 WriteLine:因為可能想在恢復正常樣式之前僅突出顯示文本的一部分。

Spectre Console Colors Styles Reusability 3 related to 結合內嵌和預設樣式

該功能為您提供了一種靈活的方式來構建複合輸出——可能是一個數據表、一個長時間運行工作的進度條,或一個具有多列的面板——並僅將樣式應用於某些項目或標籤。

總結 – 您的選擇

到 9:01,Tim 總結了選擇:

  • 使用 [color]text[/] 和 Markup 或 MarkupLine 進行快速格式化的內嵌樣式。

  • 或使用 new Style() 創建新樣式,並在您調用 AnsiConsole.Write 時將其應用於 Markup 物件。

Tim 在 9:26 鼓勵觀眾"嘗試不同的顏色、背景和裝飾及其他",包括製作帶有樣式標題的新表格、添加隨著您處理文件或項目數組而更新的進度條,甚至將 JSON 數據轉換為樣式顯示。

他在 9:33 謝謝觀眾觀看並提醒他就是 Tim Corey。 這個系列基於由 Patrik Svensson 創建的 Spectre Console 程式庫,並由 Phil Scott等開發者貢獻, Tim 的影片幫助您快速掌握其功能。

結論

Tim Corey 的 影片 清楚地示範了如何利用 Spectre Console 使普通的控制台應用程式變得具有視覺吸引力。 從內嵌標記到完全可重用的樣式類,他一步步地走過如何控制前景和背景顏色、文本裝飾和光標位置。

如果您參考上面時間戳记跟隨 Tim 的示例,您將能夠在不猜測語法的情況下,快速為自己的控制台應用程式添加專業外觀的樣式。 一旦您了解如何分配變數、添加裝飾並渲染樣式化文本,您可以輕鬆擴展這些技能來構建表格、面板、進度條和其他 Spectre Console 所提供的功能。

正如 Tim 所言,"試試看... 看看您喜歡什麼。"

Hero Worlddot related to 顏色和樣式及可重用性 - Spectre Console系列
Hero Affiliate related to 顏色和樣式及可重用性 - Spectre Console系列

通過分享您所愛的東西賺得更多

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

鋼鐵支援團隊

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