首页 > 其他分享 >使用Spectre.Console定制.NET控制台输出样式演示

使用Spectre.Console定制.NET控制台输出样式演示

时间:2024-10-15 16:59:21浏览次数:7  
标签:Console AnsiConsole Spectre new MarkupLine table NET

  创建一个控制台项目,引用包Spectre.Console。或者如果需要定制控制台cli命令,也可以引用 Spectre.Console.Cli ,里面自带包含了Spectre.Console   0   先做个最简单的输出演示,例如下划线、背景色、加粗等,如下图演示所示。 0   MarkupLine对应WriteLine的效果,去掉Line,就代表没了换行。需要实现的输出样式里面,字符串在两个[]之间,样式结束以[/]结尾。

AnsiConsole.MarkupLine("[underline green]绿色下划线[/]");
AnsiConsole.MarkupLine("[blue on white]这是蓝底白字[/]");
AnsiConsole.MarkupLine("这是正常文本");
AnsiConsole.MarkupLine("[bold]这是粗体文本[/]");

 

也可以输出表格样式,例如如下图所示效果 0  
  // 创建一个表格
  var table = new Table();

  // 设置表格的标题
  table.Title("[bold green]员工信息表[/]");

  // 添加列(可以设置对齐方式等属性)
  table.AddColumn(new TableColumn("[u]姓名[/]").Centered());
  table.AddColumn(new TableColumn("[u]部门[/]").Centered());
  table.AddColumn(new TableColumn("[u]职位[/]").Centered());
  table.AddColumn(new TableColumn("[u]邮箱[/]").Centered());

  // 添加行
  table.AddRow("张三", "技术部", "软件工程师", "[email protected]");
  table.AddRow("李四", "市场部", "市场分析师", "[email protected]");
  table.AddRow("王五", "人力资源部", "招聘专员", "[email protected]");

  // 设置表格的样式
  table.Border(TableBorder.Rounded);
  table.BorderColor(Color.Red);
  table.Alignment = Justify.Center;

  // 显示表格
  AnsiConsole.Write(table);

 

也可以设计进度条动态效果:  

 

 
            AnsiConsole.Progress()
            .Start(progress =>
            {
                // 创建一个进度条任务
                var task = progress.AddTask("[green]下载中...[/]");

                while (!task.IsFinished)
                {
                    // 更新进度条的进度
                    task.Increment(0.5);
                    Thread.Sleep(50);
                }
            });

 

  也可以设计类似pip下载时候的动态耗时效果:

 

 
  // 使用 Status 方法来实现动态显示
  AnsiConsole.Status()
      .Start("计时器...", ctx =>
      {
          while (true)
          {
              // 计算已经过去的时间
              TimeSpan elapsed = DateTime.Now - startTime;

              // 更新状态文本
              ctx.Status($"耗时: [bold yellow]{elapsed.TotalSeconds:n1}[/] 秒");

              // 刷新频率,每200毫秒更新一次
              System.Threading.Thread.Sleep(200);
          }
      });

 

如果以上内容对你有帮助,欢迎转发、点赞、评论等。谢谢! 也欢迎关注个人公众号:【Dotnet Dancer】

 

参考文献: [1]:Spectre.Console官方开源项目地址:https://github.com/spectreconsole/spectre.console [2]:文档地址:https://spectreconsole.net/quick-start        

标签:Console,AnsiConsole,Spectre,new,MarkupLine,table,NET
From: https://www.cnblogs.com/weskynet/p/18467930

相关文章

  • Kubernets 生成永不过期的token
    [root@k8s-master-01~]#kubeadmtokencreate--ttl0m3g8ci.usn0m7xw6xp266xe[root@k8s-master-01~]#kubeadmtokencreate--ttl0c5g3ke.7tcrrnkq6nrov9gk[root@k8s-master-01~]#kubeadmtokenlistTOKENTTLEXPIRESUSAGES......
  • MQTTnet.Server同时支持mqtt及websocket协议
    Net6后写法 Net6前写法Program.csusingMicrosoft.AspNetCore.Hosting;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.Hosting;usingMQTTnet.AspNetCore;usingSystem;usingSystem.IO;namespaceMQTTnet.Server{publicclassProgra......
  • 一张图带你了解.NET终结(Finalize)流程 ----续
    接上文https://www.cnblogs.com/lmy5215006/p/18456380评论区精彩,大佬深入讨论了C#的Finalize最佳实践,感觉有必要整理下来,拓展阅读,开拓眼界。GC类中几个非常重要的APIGC.ReRegisterForFinalize顾名思义,再次注册一个已经注册过的可终结对象。其底层实现逻辑与常规的终结注册......
  • YoloDotNet v2.1:实时物体检测的利器
    https://www.cnblogs.com/shanyou/p/18457208 项目介绍YoloDotNetv2.1是一个基于C#和.NET8的实时物体检测框架,专为图像和视频中的物体检测而设计。它集成了Yolov8~Yolov11模型,通过ML.NET和ONNX运行时实现高效的物体检测,并支持GPU加速(使用CUDA)。YoloDotNet......
  • 神经网络之卷积篇:详解残差网络(ResNets)(Residual Networks (ResNets))
    详解残差网络ResNets是由残差块(Residualblock)构建的,首先解释一下什么是残差块。这是一个两层神经网络,在\(L\)层进行激活,得到\(a^{\left\lbrackl+1\right\rbrack}\),再次进行激活,两层之后得到\(a^{\left\lbrackl+2\right\rbrack}\)。计算过程是从\(a^{[l]}\)开始,首先进......
  • dotnet独立打包 如何设置崩溃自动生成dump
    在.NET应用程序中,可以通过设置环境变量来实现崩溃时自动生成dump文件。以下是如何设置环境变量以及相关的代码示例:设置环境变量:在Windows系统中,可以通过以下步骤设置环境变量:打开“系统属性”->“高级”->“环境变量”。在“系统变量”下,点击“新建”,添加以下变量:变量名:C......
  • .net ocre 程序崩溃自动dump在多平台中的实现
    前言经常排查问题的朋友都知道,我们在遇到CPU或者内存高的时候,有时会生成dump文件来做分析。但是我们也会遇到一些场景,应用程序直接崩溃退出,这个时候我们已经没法使用常规方式dump了,因为整个进程树已经退出了,那么我们有没有办法让系统自动做dump,答案是肯定的:让系统在程序崩溃时自......
  • 4、.Net 快速开发框架:DncZeus - 开源项目研究文章
    DncZeus是一个基于ASP.NETCore和Vue.js的前后端分离的通用后台管理系统框架,其愿景是成为一个易于使用且功能丰富的.NETCore通用后台权限管理模板系统基础框架。项目名称"DncZeus"由"Dnc"(.NETCore的缩写)和"Zeus"(古希腊神话中的众神之王)组成,寓意该项目在.N......
  • vite打包 删除console,还有拆分太大的包配置
    在Vite中,你可以通过使用Rollup插件来自动去除console.log语句。一个常用的插件是rollup-plugin-terser,它能够压缩和优化代码,包括去除调试语句。以下是如何在Vite中配置该插件的步骤:安装插件:首先,你需要安装terser和rollup-plugin-terser:npminstallterserrollu......
  • 笨方法实现resnet18
    importtorchclassmyResNet(torch.nn.Module):def__init__(self,in_channels=3,num_classes=10):super(myResNet,self).__init__()#第1层self.conv0_1=torch.nn.Conv2d(in_channels,64,kernel_size=7,stride=2,padding=3)......