跳至页脚内容
Iron Academy Logo
C# 应用程序
C# 应用程序

其他类别

使用 FIGlet 创建文字艺术 - Spectre 控制台系列

Tim Corey
3m 47s

Spectre Console 是一个 .NET 库,旨在通过丰富的文本、面板、表格、进度条甚至 ASCII 文字艺术来增强控制台应用程序。 您可以在显示的数据中添加颜色、对齐方式和可视化结构,而不必拘泥于普通的黑白输出。 Spectre Console Figlet 是其最吸引眼球的功能之一,它允许您使用经典的 Figlet 字体格式渲染大型文字横幅。

在本文中,我们将通过 Tim Corey 的视频"Creating Word Art with Figlet - Spectre Console Series"来深入了解这一功能。

介绍 Spectre Console 中的 Figlet.

0:00 时,Tim 提醒观众:"Spectre Console 可以让您将 C# 控制台应用程序变成视觉上吸引人、内容丰富的应用程序"。他将该库描述为一种构建带有面板、表格、进度指示器和其他服务的全功能命令行工具的方法,而无需自己手动编写 ANSI 代码。

0:16 时,他说:"在本课中,我们将使用一个名为 Figlet 的系统来创建 ASCII 文字艺术"。Figlet 作为一种使用 figlet 字体文件(扩展名通常为 .flf)将文本渲染为横幅式 ASCII 文字艺术的方法,已经存在了几十年。 Spectre Console 默认内置 Figlet 字体,但也可以加载其他字体。 该库将这一功能封装在一个名为 FigletText 的类(有时称为 Spectre Figlet 文本对象)中,您可以将其创建为一个新实例,然后对其进行样式化。

Tim 在 0:22 处指出,视频描述中链接了本示例的源代码,观众可以下载并跟读。

第一个示例:内联 Spectre 控制台 Figlet 文本

0:38 时,Tim 开始介绍他所谓的 "简易内联方式"。您只需在一条语句中创建并渲染 Spectre Console Figlet 文本对象:

AnsiConsole.Write(
    new FigletText("Hello")
        .Centered()
        .Color(Color.Red)
);
AnsiConsole.Write(
    new FigletText("Hello")
        .Centered()
        .Color(Color.Red)
);

在 0:46 处,Tim 解释说他正在创建一个带有字符串参数 "Hello "的 FigletText 新实例。 该参数为要渲染的文本。

在 0:53 处,他直接在对象上链上了样式方法。 首先在 1:00 处使用 .Centered(),将 ASCII 横幅对齐并置于可用列的中心。 然后在 1:02 处使用 .Color(Color.Red),应用指定的颜色--在本例中,红色是重点色。

当 Tim 在 1:12 处运行这段代码时,控制台会以内置的 Figlet 字体格式显示一个粗体、红色 ASCII "HELLO"。 这是一种为您的控制台应用程序添加大标题或页眉的快速方法。

Spectre Console Word Art Figlet 1 related to 第一个示例:内联 Spectre 控制台 Figlet 文本

第二个示例:重复使用 FigletText 对象

1:22 时,Tim 展示了第二种模式:首先创建一个变量,而不是内联创建 Figlet 文本。这样可以更方便地设置或存储属性、更改样式或重复使用同一对象。

var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);
var figlet = new FigletText("World");
figlet.Centered();
figlet.Color(Color.Red);
AnsiConsole.Write(figlet);

1:28 时,Tim 用字符串 "World "创建了新实例。 在 1:41 处,他调用 .Centered() 将其居中。 在 1:44 时,他再次设置了颜色--他开玩笑说"我们用红色吧,为什么不呢?"--在 1:59 时,他使用 AnsiConsole.Write(figlet); 将对象写入控制台。

在 2:04 时运行时,会在之前的 "HELLO "下方显示 "WORLD"(世界),采用大 ASCII 艺术形式。 这表明函数写入了两个独立的块,因为您调用了两次 Write。

了解如何使用 Figlet 进行写作

Tim 在 2:10 暂停,介绍了 Spectre Console 如何渲染 Figlet 文本的一个重要细节。 通常,AnsiConsole.Write 不会像 WriteLine 那样附加换行符。 但对于某些可呈现对象(如 FigletText 或面板),Spectre Console 会自动以换行符结束代码块,以便正确显示。

他在 2:20 处解释说,字符串的长度也可能导致换行,这取决于控制台窗口或字体文件的宽度,但这与换行行为是两个不同的问题。 这对于构建命令系统或编写多标题、表格或进度条的脚本的用户来说是非常有用的:你不能完全依赖 Write 来处理普通字符串。

样式选项:颜色及其他

2:53 时,Tim 指出指定颜色并不局限于红色。 您可以使用绿色、白色、黄色或库支持的任何颜色:

figlet.Color(Color.Yellow);
figlet.Color(Color.Yellow);

他在 3:00 处指出,您还可以 "让它闪烁 "并应用其他样式,不过他并没有在这节简短的课程中介绍所有选项。 主要内容是 FigletText 对象公开了公共属性(如颜色),您可以在运行时设置或切换这些属性。

Spectre Console Word Art Figlet 2 related to 样式选项:颜色及其他

这表明您可以轻松选择不同的字符串和颜色,在控制台应用程序中创建品牌标题、提示或数据部分标题。

Figlet 字体和文件

虽然 Tim 在这个例子中保持了简单,但底层系统使用了 figlet 字体格式(.flf 文件)来呈现每个字符。 Spectre Console 包含字体的默认值(称为 "标准"),但您可以将 FigletText 构造函数指向不同的 figlet 字体文件,以彻底改变 ASCII 图像的外观。

这使得打开自定义字体的路径,将其添加到项目中,并返回完全不同风格的横幅成为可能。 Tim 的视频短片中并没有展示这一点,但这是他正在演示的 API 的一部分。

控制台应用程序中的实际用途

最后,Tim 在 3:12 提醒观众 Figlet 可用于为您的应用程序创建有趣的标题。 FigletText 与 Spectre Console 的其他功能(如用于显示数据库数据的表格、用于显示长期运行任务的进度条以及用于分组信息的面板)相结合,可以帮助您构建一个完美的命令系统。

例如,您可以使用 Figlet 文本来

  • 在工具或脚本的开头显示大标题或版本号。

  • 在检索数据表格上方显示章节标题。

  • 提供一种强调色来突出警告或成功信息。

  • 将多步骤提示或服务中的不同操作分开。

由于 FigletText 是一个可呈现对象,因此您可以将其存储在变量中,设置或更改其属性(颜色、对齐方式、文本字符串),然后将其多次写出。

总结

本课可能会很快,但它确切地展示了如何使用 Spectre Console 的 Figlet 支持为您的控制台输出添加即时风格。

如果您想了解更多详情,Tim 建议您访问源代码和 Spectre Console 文档的链接。 如果您想尝试不同的风格,还可以在这里下载其他 Figlet 字体。

Tim Corey 视频中的要点

  • Spectre Console Figlet 可让您使用 FigletText 对象渲染 ASCII 横幅。

  • 您可以内联或作为新实例创建它,设置其属性,然后编写它。

  • 它默认使用内置的 Figlet 字体,但也可以加载自定义的 .flf 字体文件。

  • .Centered() 和 .Color(Color.Red) 是您可以应用的样式示例。

  • AnsiConsole.Write 会自动为 Figlet 文本添加换行符。

  • 该功能非常适合控制台应用程序中的页眉、标题或分节符。

通过观看 Tim Corey 的视频,您可以立即开始使用 Spectre Console 的 Figlet 支持来增强自己的命令行工具。 无论您是要显示检索到的数据、编写提示信息,还是要为脚本添加风格,FigletText 都能以最少的代码为您的控制台增添醒目的色彩。

Hero Worlddot related to 使用 FIGlet 创建文字艺术 - Spectre 控制台系列
Hero Affiliate related to 使用 FIGlet 创建文字艺术 - Spectre 控制台系列

分享您的所爱,赚取更多收入

您为使用 .NET、C#、Java、Python 或 Node.js 的开发人员创建内容吗?将您的专业知识转化为额外收入!

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我