色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(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演示使用。現(xiàn)在是時(shí)候讓控制臺(tái)應(yīng)用程序得到其應(yīng)有的尊重了。

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

在本篇博文中,我們將一起看一下如何使用一些出色的開源項(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字體編寫帶顏色的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包是我(作者)自己編寫的,這里有一點(diǎn)厚顏無(wú)恥.。 使用這個(gè)庫(kù),可以讓開發(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),許多開發(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)畫中展示的效果。

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è)功能完善的工具箱,開發(fā)人員可以使用它構(gòu)建早期控制臺(tái)常見的一種用戶界面。

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

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

使用它,開發(fā)人員可以在控制臺(tái)應(yīng)用中實(shí)現(xiàn)一些令人難以置信的效果。這個(gè)庫(kù)是由Miguel De Icaza編寫的,是控制臺(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é)#

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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

    瀏覽量

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

    關(guān)注

    37

    文章

    3277

    瀏覽量

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

    關(guān)注

    0

    文章

    47

    瀏覽量

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

    關(guān)注

    3

    文章

    661

    瀏覽量

    39716
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何利用微型電動(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 ?199次閱讀
    如何利用微型電動(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>?

    類似大疆高精度三軸云臺(tái)驅(qū)動(dòng)方案的深度解析

    對(duì)無(wú)人機(jī)需求的不斷增長(zhǎng),對(duì)云臺(tái)的穩(wěn)定性和精度要求也日益提高。大疆憑借其卓越的技術(shù)實(shí)力,研發(fā)出了令人驚嘆的高精度三軸云臺(tái)驅(qū)動(dòng)方案,為用戶帶來(lái)了前所未有的拍攝體驗(yàn)。 二、三軸云臺(tái)的基本原理
    的頭像 發(fā)表于 10-10 17:30 ?428次閱讀

    深度解析艾畢勝全景直播云臺(tái)驅(qū)動(dòng)板方案

    在當(dāng)今數(shù)字化的時(shí)代,全景直播以其獨(dú)特的視角和沉浸式的體驗(yàn),迅速吸引了廣大用戶的目光。而在這背后,全景直播云臺(tái)驅(qū)動(dòng)板方案起著至關(guān)重要的作用。接下來(lái),就讓我們一同深入探究這一神秘而又關(guān)鍵的技術(shù)。 一
    的頭像 發(fā)表于 10-09 17:38 ?255次閱讀

    控制臺(tái)窗口主機(jī)是什么

    控制臺(tái)窗口主機(jī)(conhost),通常指的是在Windows操作系統(tǒng)中用于承載和控制控制臺(tái)窗口(即命令行界面或CMD窗口)的進(jìn)程。以下是對(duì)控制臺(tái)窗口主機(jī)的介紹: 一、定義與功能 定義
    的頭像 發(fā)表于 10-08 18:12 ?2180次閱讀

    火語(yǔ)言RPA如何建立控制臺(tái)應(yīng)用

    火語(yǔ)言通過(guò)軟件自帶的豐富的顆粒組件庫(kù),開發(fā)出滿足各種需求的應(yīng)用。火語(yǔ)言中的應(yīng)用分為兩種常見類型,界面應(yīng)用以及控制臺(tái)應(yīng)用。 下面詳細(xì)介紹下控制臺(tái)應(yīng)用的定義以及構(gòu)建方法。 控制臺(tái)應(yīng)用 控制臺(tái)
    的頭像 發(fā)表于 08-15 09:24 ?426次閱讀
    火語(yǔ)言RPA如何建立<b class='flag-5'>控制臺(tái)</b>應(yīng)用

    UART調(diào)試控制臺(tái)在帶有FX3S的定制PCB上無(wú)法正常工作怎么解決?

    我正試圖為我們帶有賽普拉斯 FX3S 的定制 PCB 設(shè)置調(diào)試控制臺(tái)。 GPIO 引腳 48 和 49 連接到 UART USB 適配器,然后連接到 PC,通過(guò) COM 端口
    發(fā)表于 07-23 06:12

    升級(jí)到SDK 2.0,esp8266只會(huì)向控制臺(tái)打印致命的異常,為什么?

    我升級(jí)到SDK 2.0,我在user_init文件中添加了新的必需函數(shù)。代碼仍然可以編譯和上傳,但在啟動(dòng)后,esp8266只會(huì)向控制臺(tái)打印致命的異常。使用 SDK 1.5.4,一切正常。
    發(fā)表于 07-12 06:57

    UART傳輸在控制臺(tái)中顯示垃圾值是哪里的問(wèn)題?

    控制臺(tái)窗口上顯示的不是"Hello World" ,而是垃圾字符。 我檢查了流程,發(fā)現(xiàn)與示例代碼相似,如波特率設(shè)置正確,緩沖區(qū)流程也正確。 錯(cuò)誤還可能出現(xiàn)在哪里?
    發(fā)表于 07-02 08:24

    藍(lán)牙音頻接收模塊在調(diào)音臺(tái)中的應(yīng)用方案

    藍(lán)牙模塊方案的應(yīng)用使得調(diào)音控制臺(tái)實(shí)現(xiàn)了無(wú)線控制,擺脫了傳統(tǒng)有線連接的束縛。音樂(lè)制作人員或演出者只需通過(guò)搭載藍(lán)牙模塊技術(shù)的移動(dòng)設(shè)備(如智能手機(jī)、平板電腦)與調(diào)音控制臺(tái)連接,即可實(shí)現(xiàn)對(duì)音頻
    的頭像 發(fā)表于 06-26 15:26 ?694次閱讀
    藍(lán)牙音頻接收模塊在調(diào)音臺(tái)中的應(yīng)用<b class='flag-5'>方案</b>

    通過(guò)win10控制臺(tái)編譯時(shí),為什么有時(shí)需要不斷敲回車才能繼續(xù)編譯?如何解決?

    通過(guò)win10控制臺(tái)編譯項(xiàng)目,控制臺(tái)會(huì)實(shí)時(shí)顯示編譯進(jìn)度,但是有時(shí)候出現(xiàn)一個(gè)文件編譯好之后,控制臺(tái)不自動(dòng)編譯下一個(gè)文件,需要敲一次回車才能繼續(xù),如何解決?
    發(fā)表于 06-19 06:35

    請(qǐng)問(wèn)ESP32C3如何重定向控制臺(tái)串口?

    軟件環(huán)境:esp-idf v4.4 硬件環(huán)境:esp32c3 問(wèn)題描述:需要將控制臺(tái)輸出重定向到 UART1(RX: GPIO4,TX:GPIO5),UART0 用來(lái)做上下位機(jī)通信。 按照這個(gè)鏈接
    發(fā)表于 06-07 08:12

    ArkTS語(yǔ)言基礎(chǔ)類庫(kù)-解析

    統(tǒng)一資源定位符,可以提供找到該資源的路徑。 提供常見的[字符串和二進(jìn)制數(shù)據(jù)處理]的能力,以及[控制臺(tái)打印]的相關(guān)能力。 字符串編解碼功能。 基于Base64的字節(jié)編碼和解碼功能。 提供常見的有理數(shù)操作
    發(fā)表于 02-20 16:44

    Python 控制臺(tái)CS V8.11.00 綜合開發(fā)環(huán)境用戶手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《Python 控制臺(tái)CS V8.11.00 綜合開發(fā)環(huán)境用戶手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 01-29 12:00 ?0次下載
    Python <b class='flag-5'>控制臺(tái)</b>CS V8.11.00 綜合開發(fā)環(huán)境用戶手冊(cè)

    LED樹木燈光亮化方案的設(shè)計(jì)與控制技術(shù)解析

    LED樹木燈光亮化方案的設(shè)計(jì)與控制技術(shù)解析
    的頭像 發(fā)表于 01-24 17:54 ?830次閱讀
    LED樹木燈光亮化<b class='flag-5'>方案</b>的設(shè)計(jì)與<b class='flag-5'>控制</b>技術(shù)<b class='flag-5'>解析</b>

    如何利用ChatGPT快速實(shí)現(xiàn)一個(gè)控制臺(tái)進(jìn)度條小工具?

    控制臺(tái)程序執(zhí)行一些耗時(shí)任務(wù)時(shí),需要向用戶顯示當(dāng)前任務(wù)執(zhí)行的進(jìn)度,以提供清晰的感知。比如一個(gè)下載程序,通過(guò)進(jìn)度條便能告知用戶當(dāng)前的下載進(jìn)度。
    的頭像 發(fā)表于 01-18 13:41 ?977次閱讀
    如何利用ChatGPT快速實(shí)現(xiàn)一個(gè)<b class='flag-5'>控制臺(tái)</b>進(jìn)度條小工具?
    主站蜘蛛池模板: 国产欧美精品一区二区三区-老狼 国产欧美精品国产国产专区 | 亚洲人成人毛片无遮挡| 国产小视频免费看| 一攻多受h嗯啊巨肉bl巨污| 男人天堂黄色| 国产精品视频国产永久视频| 杨幂视频在线观看1分30秒 | 日本免费xxx| 国产精品久久久久久熟妇吹潮软件 | 亚洲精品自在在线观看| 久久久这里有精品999| 阿娇和冠希13分钟在线观看| 无码乱人伦一区二区亚洲| 久久精品麻豆国产天美传媒果冻| tube日本护士| 亚洲一卡久久4卡5卡6卡7卡| 女侠含泪巨臀迎合79| 国产视频a在线观看v| 99久久精品久久久| 亚洲精品久久久久AV无码| 欧美肥婆性生活| 韩国精品韩国专区久久| MD传媒在线观看佳片| 亚洲精品美女久久久久99| 青青久| 久久久97人妻无码精品蜜桃 | 99久久精品免费看国产一区二区三区 | 美女脱了内裤张开腿让男人桶到爽| 白嫩美女直冒白浆| 伊人国产在线视频| 色偷偷伊人| 男女性杂交内射妇女BBWXZ| 国产亚洲日韩另类在线观看| a一级一片免费观看视频| 亚洲天堂久久久| 忘忧草秋观看未满十八| 欧美色图天堂网| 开心色99xxxx开心色| 果冻传媒 在线播放观看| 老头扒开粉缝亲我下面| 国产精品成人在线播放|