zoukankan      html  css  js  c++  java
  • [原]Console小技巧——字符涂鸦

    这篇主要讲解如何使用简单的字符界面模拟图形界面。

    Console针对是针对字符界面的,没有图形界面那么好看,但是我们稍微花点心思,Console程序照样能做得很有意思。使用过Linux的朋友(特指使用字符界面)都会对wget、rpm、top等这些命令的字符输出惊叹。

    我剽窃了前辈大牛们的创意,用C#在Console程序实现了一个CPU负载监控,功能类似于“任务管理器”的“性能”选项卡的CPU部分,当然功能弱很多啦。先上一张任务管理器的图吧。

    image

    这是我的Console程序的输出。

    image

    由于字符界面很难做到图形化界面那样细腻,所以仅将CPU的平均负载画出来,每个核的负载没有画出来。

    这样的Console程序基本思路是:

    1。画出一个框架。

    2。定位光标,然后更新缓冲区。

    以下给出一段画出框架的代码:

    private static void BuildFramework()
    {
        Console.WriteLine(@"                                  CPU LOADING                                ");// 0
        Console.WriteLine(@"                                  ~~~~~~~~~~~                                ");// 1
        Console.WriteLine(@" 11% [                                                                      ]");// 2
        Console.WriteLine(@"     ========================================================================");// 3  
        Console.WriteLine(@"100% +----------------------------------------------------------------------+");// 4   +
        Console.WriteLine(@" 90% +----------------------------------------------------------------------+");// 5   |
        Console.WriteLine(@" 80% +----------------------------------------------------------------------+");// 6   |
        Console.WriteLine(@" 70% +----------------------------------------------------------------------+");// 7   |
        Console.WriteLine(@" 60% +----------------------------------------------------------------------+");// 8   |   
        Console.WriteLine(@" 50% +----------------------------------------------------------------------+");// 9   yLenth:11
        Console.WriteLine(@" 40% +----------------------------------------------------------------------+");// 10  |
        Console.WriteLine(@" 30% +----------------------------------------------------------------------+");// 11  |
        Console.WriteLine(@" 20% +----------------------------------------------------------------------+");// 12  |
        Console.WriteLine(@" 10% +----------------------------------------------------------------------+");// 13  |
        Console.WriteLine(@"  0% +----------------------------------------------------------------------+");// 14  +
        Console.WriteLine(@"     ========================================================================");// 15
        //                  |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    | 
        //                  0    5   10   15   20   25   30   35   40   45   50   55   60   65   70   75  
        //                        |<----------------------- xLength:70 -------------------------------->|           
    }

    注释部分相当于标尺,方便第二步的定位光标。

    定位光标主要使用 Console.SetCursorPosition(int left , int top) 这个方法,很显然left相当于横坐标,top相当于总坐标啦。有了这个“武器”就可以开始涂鸦了。

    以下给出一段话 “ProcessBar” 的代码:

    // 用#画出类似ProcessBar的效果
    Console.SetCursorPosition(6, 2);
    int graphics = int.Parse(loading) * xLength / 100;
    for (int i = 0; i < graphics; i++)
    {
        Console.Write(@"#");
    }
    for (int i = 0; i < xLength - graphics; i++)
    {
        Console.Write(@" ");
    }

    如果结合上一篇:[原]Console小技巧——七彩输出 在输出中着色,那就更加漂亮了。

    ActiveConsole源代码下载

  • 相关阅读:
    Docker_使用Rancher管理docker(7)
    Docker_部署本地镜像仓库(6)
    Python_多任务:进程、线程、协程
    JMeter_实现算法加密
    Docker_创建自定义镜像(5)
    Fiddler Everywhere简单使用
    Docker_容器(container)使用(4)
    Docker_镜像(image)使用(3)
    C#读写锁ReaderWriterLockSlim的使用
    C++二级指针第三种内存模型
  • 原文地址:https://www.cnblogs.com/killkill/p/1424294.html
Copyright © 2011-2022 走看看