chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

提升.NET控制臺(tái)應(yīng)用體驗(yàn)的方案解析

454398 ? 來(lái)源:博客園 ? 作者:Lamond Lu ? 2020-10-29 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在.NET生態(tài)系統(tǒng)中,控制臺(tái)程序的表現(xiàn)相對(duì)較差。通常來(lái)說(shuō),這種項(xiàng)目經(jīng)常作為Demo演示使用?,F(xiàn)在是時(shí)候讓控制臺(tái)應(yīng)用程序得到其應(yīng)有的尊重了。

終端技術(shù)的發(fā)展開(kāi)啟了增強(qiáng)用戶體驗(yàn)的復(fù)興。ITerm2,Hyper,Windows Terminal,所有這些工具都為單調(diào)的控制臺(tái)體驗(yàn)增加了一些趣味。 雖然這些工具都允許用戶定制自己體驗(yàn),但是對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),他們還希望向控制臺(tái)應(yīng)用程序中添加一些編程風(fēng)格。

在本篇博文中,我們將一起看一下如何使用一些出色的開(kāi)源項(xiàng)目為我們的控制臺(tái)程序增添趣味。這里說(shuō)明的順序并不表明項(xiàng)目的優(yōu)劣,他們都是改善我們控制臺(tái)程序體驗(yàn)的優(yōu)秀方案。

Colorful.Console#

Colorful.Console是一個(gè)Nuget包,它可以增強(qiáng)我們對(duì)控制臺(tái)輸出文字樣式的控制。我們可以使用System.Drawing.Color中定義的顏色來(lái)定義控制臺(tái)程序的配色方案。

using System;
using System.Drawing;
using Console = Colorful.Console;
...
...
Console.WriteLine("console in pink", Color.Pink);
Console.WriteLine("console in default");

除此之外,Colorful.Console還允許我們使用FIGlet字體編寫(xiě)帶顏色的ASCII碼輸出

FIGLet:http://www.figlet.org/

FigletFont font = FigletFont.Load("chunky.flf");
Figlet figlet = new Figlet(font);

Console.WriteLine(figlet.ToAscii("Belvedere"), ColorTranslator.FromHtml("#8AFFEF"));
Console.WriteLine(figlet.ToAscii("ice"), ColorTranslator.FromHtml("#FAD6FF"));
Console.WriteLine(figlet.ToAscii("cream."), ColorTranslator.FromHtml("#B8DBFF"));

這個(gè)輸出的結(jié)果完全就是黑客的夢(mèng)想。

我建議你訪問(wèn)一下colorful.console的官方站點(diǎn),了解這個(gè)庫(kù)能實(shí)現(xiàn)的所有效果,以便更好的改善控制臺(tái)程序的體驗(yàn)。

Colorful.Console:http://colorfulconsole.com/

ConsoleTables#

ConsoleTables包是我(作者)自己編寫(xiě)的,這里有一點(diǎn)厚顏無(wú)恥.。 使用這個(gè)庫(kù),可以讓開(kāi)發(fā)人員很輕松的將一組對(duì)象以表格的形式展示在控制臺(tái)中。

static void Main(String[] args)
{
    var table = new ConsoleTable("one", "two", "three");
    table.AddRow(1, 2, 3)
         .AddRow("this line should be longer", "yes it is", "oh");

    table.Write();
    Console.WriteLine();

    var rows = Enumerable.Repeat(new Something(), 10);

    ConsoleTable
        .From(rows)
        .Configure(o => o.NumberAlignment = Alignment.Right)
        .Write(Format.Alternative);

    Console.ReadKey();
}

以前,誰(shuí)不希望能在控制臺(tái)中輸出一個(gè)表格呢?

FORMAT: Default:

-------------------------------------------------
 | one                        | two       | three |
 --------------------------------------------------
 | 1                          | 2         | 3     |
 --------------------------------------------------
 | this line should be longer | yes it is | oh    |
 --------------------------------------------------

 Count: 2

FORMAT: Alternative:

+----------------------------+-----------+-------+
| one                        | two       | three |
+----------------------------+-----------+-------+
| 1                          | 2         | 3     |
+----------------------------+-----------+-------+
| this line should be longer | yes it is | oh    |
+----------------------------+-----------+-------+

自從ConsoleTables發(fā)布以來(lái),許多開(kāi)發(fā)人員已經(jīng)研發(fā)出自己的控制臺(tái)表格庫(kù)了。有一些甚至更好,你可以自行去查找一下。

ShellProgressBar#

和需要其他應(yīng)用程序一樣,控制臺(tái)程序也可以執(zhí)行長(zhǎng)時(shí)任務(wù)。ShellProgressBar是一個(gè)非常棒的庫(kù),使用它,你可以在控制臺(tái)輸出一些非常驚艷的進(jìn)度條。而且,ShellProgressBar是可以實(shí)現(xiàn)進(jìn)度條的嵌套使用。例如,如下GIF動(dòng)畫(huà)中展示的效果。

ShellProgressBar使用起來(lái)相當(dāng)?shù)闹苯印?/p>

const int totalTicks = 10;
var options = new ProgressBarOptions
{
    ProgressCharacter = '─',
    ProgressBarOnBottom = true
};
using (var pbar = new ProgressBar(totalTicks, "Initial message", options))
{
    pbar.Tick(); //will advance pbar to 1 out of 10.
    //we can also advance and update the progressbar text
    pbar.Tick("Step 2 of 10"); 
}

謝謝你,Martijin Larrman, 這真的是一個(gè)非常好用的庫(kù)。

GUI.CS#

GUI.CS是一個(gè)非常棒的控制臺(tái)UI工具包。它提供了一個(gè)功能完善的工具箱,開(kāi)發(fā)人員可以使用它構(gòu)建早期控制臺(tái)常見(jiàn)的一種用戶界面。

這個(gè)UI工具箱提供了如下控件:

  • Buttons
  • Labels
  • Text Entry
  • Text View
  • User Inputs
  • Windows
  • Menus
  • ScrollBars

使用它,開(kāi)發(fā)人員可以在控制臺(tái)應(yīng)用中實(shí)現(xiàn)一些令人難以置信的效果。這個(gè)庫(kù)是由Miguel De Icaza編寫(xiě)的,是控制臺(tái)技術(shù)的巔峰之作,下面讓我們一起來(lái)看一個(gè)實(shí)例程序。

using Terminal.Gui;

class Demo {
    static void Main ()
    {
        Application.Init ();
        var top = Application.Top;

	// 創(chuàng)建頂級(jí)窗體
        var win = new Window ("MyApp") {
	    X = 0,
	    Y = 1, // 預(yù)留菜單行

	    // 使用Dim.Fill(), 它可以自動(dòng)調(diào)整窗體大小,實(shí)現(xiàn)自適應(yīng),而無(wú)需手動(dòng)敢于
	    Width = Dim.Fill (),
	    Height = Dim.Fill ()
	};
        top.Add (win);

	// 創(chuàng)建一個(gè)菜單
        var menu = new MenuBar (new MenuBarItem [] {
            new MenuBarItem ("_File", new MenuItem [] {
                new MenuItem ("_New", "Creates new file", NewFile),
                new MenuItem ("_Close", "", () => Close ()),
                new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; })
            }),
            new MenuBarItem ("_Edit", new MenuItem [] {
                new MenuItem ("_Copy", "", null),
                new MenuItem ("C_ut", "", null),
                new MenuItem ("_Paste", "", null)
            })
        });
        top.Add (menu);

	var login = new Label ("Login: ") { X = 3, Y = 2 };
	var password = new Label ("Password: ") {
	    	X = Pos.Left (login),
		Y = Pos.Top (login) + 1
        };
	var loginText = new TextField ("") {
                X = Pos.Right (password),
                Y = Pos.Top (login),
                Width = 40
        };
        var passText = new TextField ("") {
                Secret = true,
                X = Pos.Left (loginText),
                Y = Pos.Top (password),
                Width = Dim.Width (loginText)
        };
	
	// 添加一些其他控件
	win.Add (
	    // 這是我最喜歡的布局
  	    login, password, loginText, passText,

	    // 這里使用了絕對(duì)定位
            new CheckBox (3, 6, "Remember me"),
            new RadioGroup (3, 8, new [] { "_Personal", "_Company" }),
            new Button (3, 14, "Ok"),
            new Button (10, 14, "Cancel"),
            new Label (3, 18, "Press F9 or ESC plus 9 to activate the menubar"));

        Application.Run ();
    }
}

總結(jié)#

作為開(kāi)發(fā)人員,我們可以沉迷于GUI, 這是理所當(dāng)然的,它使我們更有生產(chǎn)力。但是控制臺(tái)應(yīng)用程序同樣也很強(qiáng)大。下次當(dāng)你編寫(xiě)控制臺(tái)程序的時(shí)候,你可以考慮使用以上介紹的某些庫(kù),以便為你的控制臺(tái)應(yīng)用增添色彩。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制臺(tái)
    +關(guān)注

    關(guān)注

    0

    文章

    85

    瀏覽量

    10800
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3339

    瀏覽量

    59690
  • .NET
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    24282
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    688

    瀏覽量

    42321
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    FlashDB移植到rt-thread nano,運(yùn)行時(shí)控制臺(tái)無(wú)輸出怎么解決?

    rt-thread標(biāo)準(zhǔn)版和HAL裸機(jī)版,移植非常成功,換成nano 3.15版,就出現(xiàn)控制臺(tái)無(wú)輸出,也無(wú)法輸入,調(diào)試時(shí)進(jìn)入死循環(huán),如圖所示 ,關(guān)閉hook也不行,請(qǐng)求指點(diǎn)。謝謝! 上傳測(cè)試代碼,用的是nano4.1.1 4.1.1 (test).7z
    發(fā)表于 10-11 09:34

    怎么讀取到msh控制臺(tái)輸入的命令?

    如題,怎么讀取到msh控制臺(tái)輸入的命令(我的意思是輸入的內(nèi)容全部重定向獲取出來(lái)),請(qǐng)各位大佬賜教 這個(gè)代碼會(huì)提示Failed to find console device! #include
    發(fā)表于 09-29 08:37

    啟用了控制臺(tái)后,空閑線程是不是永遠(yuǎn)不會(huì)進(jìn)入?

    控制臺(tái)里打印線程(list thread)時(shí),發(fā)現(xiàn)已經(jīng)退出的線程已經(jīng)是CLOSE狀態(tài),但是都是僵尸線程。然后查看shell代碼,看到控制臺(tái)一直在跑,所以手動(dòng)添加了延時(shí)(rt_thread_delay)進(jìn)入,但調(diào)試看到空閑線程還是沒(méi)能進(jìn)入。是有什么相關(guān)宏定義需要改,還是要
    發(fā)表于 09-19 06:53

    剛創(chuàng)建的項(xiàng)目控制臺(tái)為什么不能用?

    我用cubmaxIDE配置的板子串口可以輸出,但我用rt去直接創(chuàng)建的項(xiàng)目,就是rt自身剛創(chuàng)建時(shí)的那個(gè)打印數(shù)據(jù),控制臺(tái)都沒(méi)反應(yīng)這個(gè)問(wèn)題處在哪個(gè)嗎,按回車鍵也沒(méi)有反應(yīng),這個(gè)那個(gè)大神知道為什么嗎?
    發(fā)表于 09-17 07:40

    finsh 控制臺(tái)dma發(fā)送如何操作?

    今天因?yàn)樵诟邇?yōu)先級(jí)線程中頻繁調(diào)用rt_kprintf導(dǎo)致低優(yōu)先級(jí)運(yùn)行阻塞,所以突發(fā)奇想想試試控制臺(tái)能不能dma發(fā)送,在保證對(duì)應(yīng)uart tx dma的驅(qū)動(dòng)打開(kāi)后,rt_device_open里
    發(fā)表于 09-11 07:48

    攝像機(jī)云臺(tái)與消費(fèi)電機(jī)的理想驅(qū)動(dòng):MS3142集成方案解析

    在科技飛速發(fā)展的今天,攝像機(jī)云臺(tái)和消費(fèi)電機(jī)在我們的生活中扮演著越來(lái)越重要的角色。從專業(yè)的影視拍攝到日常生活中的智能設(shè)備,它們的應(yīng)用場(chǎng)景日益廣泛。而一個(gè)優(yōu)秀的驅(qū)動(dòng)方案對(duì)于這些設(shè)備的性能表現(xiàn)至關(guān)重要。今天,我們就來(lái)深入解析一下MS3
    的頭像 發(fā)表于 08-14 17:44 ?456次閱讀
    攝像機(jī)云<b class='flag-5'>臺(tái)</b>與消費(fèi)電機(jī)的理想驅(qū)動(dòng):MS3142集成<b class='flag-5'>方案</b><b class='flag-5'>解析</b>

    用 樹(shù)莓派4 打造專屬流媒體控制臺(tái)!

    用樹(shù)莓派體驗(yàn)DIY智能科技!如今市面上有各種各樣的流媒體控制臺(tái),但購(gòu)買(mǎi)現(xiàn)成的哪有自己從零開(kāi)始制作的有趣呢?至少,這似乎是樹(shù)莓派創(chuàng)客社區(qū)的精神所在,就像創(chuàng)客兼開(kāi)發(fā)者Last-Shake-9874所展示
    的頭像 發(fā)表于 05-11 08:33 ?341次閱讀
    用 樹(shù)莓派4 打造專屬流媒體<b class='flag-5'>控制臺(tái)</b>!

    UART控制臺(tái)通信問(wèn)題:命令出現(xiàn)拆分或缺失字母,怎么解決?

    我正在使用 Explorer Kit 并使用 John Hyde 書(shū)中的示例固件,特別是第 4 章示例 4。我已連接兩根 USB 電纜,并且線程顯示正確。 固件的調(diào)試控制臺(tái)打印工作正常。 但是,當(dāng)從
    發(fā)表于 05-09 07:19

    TWR-VF65GS10塔式模塊上編譯的U-Boot沒(méi)有控制臺(tái)輸出是怎么回事?

    和 RS232-to-FTDI USB 適配器成功啟動(dòng),控制臺(tái)輸出。但是,當(dāng)我從源代碼編譯 U-Boot 時(shí)(例如,使用 GitHub 上的 v2025.01 分支)并將生成的 U-Boot 二進(jìn)制文件
    發(fā)表于 04-03 06:03

    加載示例圖像時(shí),COM7的調(diào)試控制臺(tái)hello_world不顯示消息怎么解決?

    板是 mimxrt1180_evk。 我無(wú)法從板中找到 JP5。 使用示例映像進(jìn)行測(cè)試時(shí),調(diào)試控制臺(tái)(通過(guò) Windows11 電腦中的 J53、COM7 連接hello_world不顯示任何消息。 但是 gdb 在源文件中顯示了我的簡(jiǎn)單代碼更改。 請(qǐng)盡快發(fā)現(xiàn),謝謝!
    發(fā)表于 03-25 07:01

    深蕾半導(dǎo)體IP-KVM產(chǎn)品方案解析

    隨著信息技術(shù)的蓬勃發(fā)展,遠(yuǎn)程訪問(wèn)與控制技術(shù)逐漸成為各行各業(yè)不可或缺的一部分。深蕾半導(dǎo)體, 憑借其在芯片設(shè)計(jì)領(lǐng)域的深厚積累,推出了創(chuàng)新的IP-KVM產(chǎn)品方案,旨在為用戶提供高效、 安全的遠(yuǎn)程訪問(wèn)與控制解決
    的頭像 發(fā)表于 03-19 17:50 ?665次閱讀
    深蕾半導(dǎo)體IP-KVM產(chǎn)品<b class='flag-5'>方案</b><b class='flag-5'>解析</b>

    工廠老化測(cè)試解決方案:GCOM80-2NET-E如何賦能智能制造

    老化測(cè)試是產(chǎn)品質(zhì)量把控的關(guān)鍵,但傳統(tǒng)方式效率低、成本高。GCOM80-2NET-E通過(guò)智能協(xié)議解析、多設(shè)備兼容和數(shù)據(jù)輕量化,大幅提升測(cè)試效率,縮短周期,助力企業(yè)實(shí)現(xiàn)智能化升級(jí)與降本增效。行業(yè)洞察
    的頭像 發(fā)表于 03-18 11:38 ?694次閱讀
    工廠老化測(cè)試解決<b class='flag-5'>方案</b>:GCOM80-2<b class='flag-5'>NET</b>-E如何賦能智能制造

    解析AMR設(shè)計(jì)關(guān)鍵要素:照明方案、通信方案

    自主移動(dòng)機(jī)器人設(shè)計(jì)涉及各種重要器件,例如電機(jī)控制、傳感器、電源、照明和通信器件等。在之前的兩篇文章AMR電機(jī)控制方案超強(qiáng)整理,解析AMR設(shè)計(jì)關(guān)鍵要素:傳感器、可見(jiàn)光通信驅(qū)動(dòng)器、電源
    的頭像 發(fā)表于 01-14 11:10 ?1150次閱讀

    dotConnect:基于ADO.NET架構(gòu)的增強(qiáng)型數(shù)據(jù)連接解決方案

    dotConnect是一個(gè)基于ADO.NET架構(gòu)的增強(qiáng)型數(shù)據(jù)連接解決方案,是一個(gè)采用了大量創(chuàng)新技術(shù)的開(kāi)發(fā)框架。dotConnect是一款適用于主要數(shù)據(jù)庫(kù)和流行云應(yīng)用程序的高性能數(shù)據(jù)提供程序,為開(kāi)發(fā)
    的頭像 發(fā)表于 01-07 11:07 ?621次閱讀
    dotConnect:基于ADO.<b class='flag-5'>NET</b>架構(gòu)的增強(qiáng)型數(shù)據(jù)連接解決<b class='flag-5'>方案</b>

    如何利用微型電動(dòng)云臺(tái)控制方案實(shí)現(xiàn)精準(zhǔn)拍攝控制?

    微型電動(dòng)云臺(tái)電機(jī)控制方案卓聯(lián)微科技在當(dāng)今智能化與自動(dòng)化不斷發(fā)展的時(shí)代,對(duì)設(shè)備的精準(zhǔn)控制和高效運(yùn)行提出了更高的要求。我們很榮幸地向您推出一款創(chuàng)新型的微型電動(dòng)云臺(tái)
    的頭像 發(fā)表于 11-27 01:04 ?882次閱讀
    如何利用微型電動(dòng)云<b class='flag-5'>臺(tái)</b><b class='flag-5'>控制</b><b class='flag-5'>方案</b>實(shí)現(xiàn)精準(zhǔn)拍攝<b class='flag-5'>控制</b>?