前言
做过.NET控制台应用程序的同学应该都知道原生的.NET控制台应用程序输出的内容都比较的单调,假如要编写漂亮且美观的控制台输出内容或者样式可能需要花费不少的时间去编写代码和调试。今天大姚给大家分享一个.NET开源且免费的类库帮你轻松的创建漂亮、美观的.NET控制台应用程序:Spectre.Console。
![](https://file.jishuzhan.net/article/1784372666237456385/02288e867dde1615bb80e80c3f29f0b6.webp)
项目特性
- 该库有着丰富的组件,其中包括表格、网格、面板、日历、以及画布图像等。
- 支持文本样式的最常见的 SRG 参数,如粗体、暗淡、斜体、下划线、删除线和闪烁文本。
- 支持终端中的3/4/8/24位颜色。该库将检测当前终端的功能,并根据需要降低颜色。
项目源代码
![](https://file.jishuzhan.net/article/1784372666237456385/b12edd8511209bfa393ac7ea6fea7999.webp)
![](https://file.jishuzhan.net/article/1784372666237456385/d4f98e9b385e7e2e79f3a7814ee174b6.webp)
新建控制台应用
创建一个名为:SpectreExercise
的控制台应用。
![](https://file.jishuzhan.net/article/1784372666237456385/6e4e46e755cb4380424b684c65c71672.webp)
![](https://file.jishuzhan.net/article/1784372666237456385/b1743737613b32ca365e72ede0b5ae1f.webp)
![](https://file.jishuzhan.net/article/1784372666237456385/1695f7bcbad41890bce0e7fd97e92902.webp)
安装项目的NuGet包
在NuGet包管理器中搜索:Spectre.Console
点击安装。
![](https://file.jishuzhan.net/article/1784372666237456385/07c8bddf57f3b6b3616b38c3c1f75b9a.webp)
控制台文字输出
原生自带的
Console.WriteLine("你好追逐时光者!!!");
![](https://file.jishuzhan.net/article/1784372666237456385/06fde6e132d7c289776bb2033df04d55.webp)
类库设置的
AnsiConsole.Markup("[underline red]你好[/][Blue]追逐时光者[/][DarkMagenta]!!![/]");
![](https://file.jishuzhan.net/article/1784372666237456385/36a6367f010367edd7c3561c5370aeff.webp)
![](https://file.jishuzhan.net/article/1784372666237456385/e6de464e6ffa13b3cda781c78b68affb.webp)
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
![](https://file.jishuzhan.net/article/1784372666237456385/89d4779ccc93ca43e4954c2d87ca7e77.webp)
条形图
使用 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
![](https://file.jishuzhan.net/article/1784372666237456385/cc0de0bf26e575928986de8134a08fc6.webp)
日历
//日历
var calendar = new Calendar(2024, 5);
AnsiConsole.Write(calendar);
![](https://file.jishuzhan.net/article/1784372666237456385/7563ef4687efc43dbef122c91bd15444.webp)
布局
使用 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
![](https://file.jishuzhan.net/article/1784372666237456385/f1c3899fe069c7f50d88f2bb2773e337.webp)
规则水平线
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);
![](https://file.jishuzhan.net/article/1784372666237456385/00daeb6128b0df1cc09b4e7d2d893803.webp)
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。
- GitHub开源地址:https://github.com/spectreconsole/spectre.console
- 在线文档:https://spectreconsole.net/quick-start
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。