IRONSOFTWAREHOME

颜色和样式以及可重用性 - Spectre 控制台系列

颜色、样式和可重用性 - Spectre 控制台系列

Tim Corey

9分57秒

Spectre Console 是一款功能强大的 .NET NuGet 软件包,允许开发人员将普通的控制台应用程序转变为视觉丰富的体验。 通过结合 Spectre Console 颜色、文本装饰和可重复使用的样式,您可以将普通的控制台输出提升为内容丰富的精美输出。

在他的视频"颜色、样式和可重用性 - Spectre 控制台系列"中,Tim Corey 向我们介绍了如何做到这一点。 在本文中,我们将逐步介绍蒂姆提出的相同要点,并指出时间戳,以便您可以一起观看。 这是了解如何创建和自定义颜色、样式类,甚至是重复使用的新样式的好方法。

Spectre 控制台格式化简介

0:00 时,Tim 解释说 Spectre Console "可以让您将控制台应用程序变成视觉上吸引人、内容丰富的应用程序"。他指出,这个系列将库分成小块,这样开发人员就可以一次专注于一项功能。

他在描述中指出了源代码链接,并邀请用户订阅他的频道。 本课的重点是如何在控制台输出中设置和返回格式化文本,以及如何在整个程序中重复使用这些格式。

使用内联标记和 MarkupLine

0:36 时,Tim 开始演示 AnsiConsole.MarkupLine 和 AnsiConsole.Markup。这些方法可以让您直接在字符串表示中嵌入颜色和装饰。

正如 Tim 在 0:51 所解释的,Markup 不会自动插入新行,而 MarkupLine 则会--"这有点像 Console.Write 与 WriteLine"。当你想在不同的行上显示多个项目或列表时,这种区别就很重要了。

他输入 ([red]This is the inline markup[/] )并运行,显示出一个红色字符串。 然后,在 1:38 处,他演示了前景色和背景色--"白底红字"--这样用户就能看到白底红字。 到 2:05 时,他添加了黑体作为装饰。

Tim 在 2:18 指出,内联标记对于小操作来说快速而简单,但当你希望在不同功能间使用更有结构或可重复使用的样式时,"它对于所有其他操作来说并不是很好"。

创建预设样式类

在 2:32 处,Tim 演示了如何创建一个样式类的新实例以供重用。 他写道

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));

在 4:08 处,他解释说 WriteLine 只接受字符串或简单类型,但 Write 有一个接受 IRenderable 对象的重载。 这就是为什么您要将自己的风格传递给新的标记,然后再进行编写。

Tim 在 4:45 指出,这种语法 "比较费事",但它是显示样式化文本的官方方式。 他甚至建议,如果你经常这样做,可以创建自己的方法来简化翻译。

处理换行和光标位置

运行代码后,Tim 在 5:44 处指出光标与样式文本位于同一行。 这是因为 Write 不会添加新行。在 6:07 处,他展示了如何通过在字符串内添加 \n 来解决这个问题,这样光标就会向下移动。

这个小技巧可以确保您的输出符合您的期望--这在构建大型控制台应用程序时非常重要,因为在这些应用程序中,用户输入或数据会出现在样式提示之后。

添加多个装饰

接下来,蒂姆演示了装饰的组合。 在 6:27 处,他说:"如果您想应用多个装饰怎么办? 例如,我也想使用斜体"。您可以使用单个管道字符来分隔装饰。

他向大家展示了一长串的装饰--粗体、斜体、删除线、下划线、变暗、反转、闪烁,甚至在 7:05 处提到了 Windows PowerShell 和 Windows 终端支持。目前,在 Windows 终端中,慢速闪烁和快速闪烁看起来是一样的。

到 7:29 时,他再次运行代码,显示除了粗体外,还应用了斜体样式。 "Tim 在 7 分 49 秒时说:"你可以随意混合和搭配这些内容,创造出可以重复应用的风格。

当您想用红色突出显示错误,用绿色突出显示成功信息,用黄色突出显示警告,或者用蓝色、紫色、兰色甚至栗色突出显示自定义标签时,Spectre Console 支持完整的 RGB 颜色集,这是一项强大的功能。

混合内联和预设样式

在 8:02 分,Tim 演示了如何将不同风格的 "写 "和 "写 "结合起来。 您可以多次调用 AnsiConsole.Write--首先使用您的样式文本,然后使用未样式或不同样式的文本--以突出显示一行的一部分。他展示了

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

正如 Tim 在 8:37 所解释的,这就是使用 Write 而不是 WriteLine 的原因:您可能只想突出显示文本的一部分,然后再返回正常样式。

该功能为您提供了一种灵活的方式来构建复合输出(可能是一个数据表、一个用于长期运行工作的进度条或一个包含多列的面板),并仅对某些项目或标签应用样式。

总结 - 您的选择

到 9:01 时,Tim 总结了备选方案:

  • 使用 [color]text[/] 和 Markup 或 MarkupLine 进行内联样式设置,以便快速格式化。

  • 或者使用 new Style() 创建新样式,并在调用 AnsiConsole.Write 时将其应用于标记对象。

9:26 时,Tim 鼓励观众 "尝试使用不同的颜色、背景和装饰以及其他所有东西"。这包括制作带有样式标题的新表格,添加一个进度条,在处理文件或项目数组时更新,甚至将 JSON 数据转换成样式显示。

在 9:33 结束时,他向观众表示感谢,并提醒他们他是 Tim Corey。 本系列以 Patrik Svensson 创建的 Spectre Console 库为基础,Phil Scott 等开发人员也参与其中,Tim 的视频将帮助您快速掌握其功能。

结论

Tim Corey 的视频清楚地展示了 Spectre Console 如何将普通的控制台应用程序变得具有视觉吸引力。 从内联标记到完全可重用的样式类,他一步一步地介绍了如何控制前景和背景颜色、文本装饰和光标位置。

如果您按照上面时间戳中 Tim 的示例进行操作,您就能在短时间内为自己的控制台应用程序添加专业的样式,而无需猜测语法。 一旦您知道如何分配变量、添加装饰和渲染样式文本,您就可以轻松地将这些技能扩展到构建表格、面板、进度条以及 Spectre Console 提供的其他功能。

正如 Tim 所说,"试试看......看看你喜欢什么"。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户