女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

提升.NET控制臺應用體驗的方案解析

454398 ? 來源:博客園 ? 作者:Lamond Lu ? 2020-10-29 11:30 ? 次閱讀

在.NET生態系統中,控制臺程序的表現相對較差。通常來說,這種項目經常作為Demo演示使用。現在是時候讓控制臺應用程序得到其應有的尊重了。

終端技術的發展開啟了增強用戶體驗的復興。ITerm2,Hyper,Windows Terminal,所有這些工具都為單調的控制臺體驗增加了一些趣味。 雖然這些工具都允許用戶定制自己體驗,但是對于開發人員來說,他們還希望向控制臺應用程序中添加一些編程風格。

在本篇博文中,我們將一起看一下如何使用一些出色的開源項目為我們的控制臺程序增添趣味。這里說明的順序并不表明項目的優劣,他們都是改善我們控制臺程序體驗的優秀方案。

Colorful.Console#

Colorful.Console是一個Nuget包,它可以增強我們對控制臺輸出文字樣式的控制。我們可以使用System.Drawing.Color中定義的顏色來定義控制臺程序的配色方案。

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

這個輸出的結果完全就是黑客的夢想。

我建議你訪問一下colorful.console的官方站點,了解這個庫能實現的所有效果,以便更好的改善控制臺程序的體驗。

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

ConsoleTables#

ConsoleTables包是我(作者)自己編寫的,這里有一點厚顏無恥.。 使用這個庫,可以讓開發人員很輕松的將一組對象以表格的形式展示在控制臺中。

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

以前,誰不希望能在控制臺中輸出一個表格呢?

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發布以來,許多開發人員已經研發出自己的控制臺表格庫了。有一些甚至更好,你可以自行去查找一下。

ShellProgressBar#

和需要其他應用程序一樣,控制臺程序也可以執行長時任務。ShellProgressBar是一個非常棒的庫,使用它,你可以在控制臺輸出一些非常驚艷的進度條。而且,ShellProgressBar是可以實現進度條的嵌套使用。例如,如下GIF動畫中展示的效果。

ShellProgressBar使用起來相當的直接。

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, 這真的是一個非常好用的庫。

GUI.CS#

GUI.CS是一個非常棒的控制臺UI工具包。它提供了一個功能完善的工具箱,開發人員可以使用它構建早期控制臺常見的一種用戶界面。

這個UI工具箱提供了如下控件:

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

使用它,開發人員可以在控制臺應用中實現一些令人難以置信的效果。這個庫是由Miguel De Icaza編寫的,是控制臺技術的巔峰之作,下面讓我們一起來看一個實例程序。

using Terminal.Gui;

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

	// 創建頂級窗體
        var win = new Window ("MyApp") {
	    X = 0,
	    Y = 1, // 預留菜單行

	    // 使用Dim.Fill(), 它可以自動調整窗體大小,實現自適應,而無需手動敢于
	    Width = Dim.Fill (),
	    Height = Dim.Fill ()
	};
        top.Add (win);

	// 創建一個菜單
        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,

	    // 這里使用了絕對定位
            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 ();
    }
}

總結#

作為開發人員,我們可以沉迷于GUI, 這是理所當然的,它使我們更有生產力。但是控制臺應用程序同樣也很強大。下次當你編寫控制臺程序的時候,你可以考慮使用以上介紹的某些庫,以便為你的控制臺應用增添色彩。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制臺
    +關注

    關注

    0

    文章

    85

    瀏覽量

    10553
  • 應用程序
    +關注

    關注

    38

    文章

    3322

    瀏覽量

    58739
  • .NET
    +關注

    關注

    0

    文章

    48

    瀏覽量

    24282
  • GUI
    GUI
    +關注

    關注

    3

    文章

    677

    瀏覽量

    40753
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    用 樹莓派4 打造專屬流媒體控制臺

    用樹莓派體驗DIY智能科技!如今市面上有各種各樣的流媒體控制臺,但購買現成的哪有自己從零開始制作的有趣呢?至少,這似乎是樹莓派創客社區的精神所在,就像創客兼開發者Last-Shake-9874所展示
    的頭像 發表于 05-11 08:33 ?106次閱讀
    用 樹莓派4 打造專屬流媒體<b class='flag-5'>控制臺</b>!

    UART控制臺通信問題:命令出現拆分或缺失字母,怎么解決?

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

    TWR-VF65GS10塔式模塊上編譯的U-Boot沒有控制臺輸出是怎么回事?

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

    加載示例圖像時,COM7的調試控制臺hello_world不顯示消息怎么解決?

    板是 mimxrt1180_evk。 我無法從板中找到 JP5。 使用示例映像進行測試時,調試控制臺(通過 Windows11 電腦中的 J53、COM7 連接hello_world不顯示任何消息。 但是 gdb 在源文件中顯示了我的簡單代碼更改。 請盡快發現,謝謝!
    發表于 03-25 07:01

    解析AMR設計關鍵要素:照明方案、通信方案

    自主移動機器人設計涉及各種重要器件,例如電機控制、傳感器、電源、照明和通信器件等。在之前的兩篇文章AMR電機控制方案超強整理,解析AMR設計關鍵要素:傳感器、可見光通信驅動器、電源
    的頭像 發表于 01-14 11:10 ?858次閱讀

    如何利用微型電動云控制方案實現精準拍攝控制

    微型電動云臺電機控制方案卓聯微科技在當今智能化與自動化不斷發展的時代,對設備的精準控制和高效運行提出了更高的要求。我們很榮幸地向您推出一款創新型的微型電動云
    的頭像 發表于 11-27 01:04 ?563次閱讀
    如何利用微型電動云<b class='flag-5'>臺</b><b class='flag-5'>控制</b><b class='flag-5'>方案</b>實現精準拍攝<b class='flag-5'>控制</b>?

    深度解析艾畢勝全景直播云驅動板方案

    在當今數字化的時代,全景直播以其獨特的視角和沉浸式的體驗,迅速吸引了廣大用戶的目光。而在這背后,全景直播云驅動板方案起著至關重要的作用。接下來,就讓我們一同深入探究這一神秘而又關鍵的技術。 一
    的頭像 發表于 10-09 17:38 ?455次閱讀

    控制臺窗口主機是什么

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

    火語言RPA如何建立控制臺應用

    火語言通過軟件自帶的豐富的顆粒組件庫,開發出滿足各種需求的應用。火語言中的應用分為兩種常見類型,界面應用以及控制臺應用。 下面詳細介紹下控制臺應用的定義以及構建方法。 控制臺應用 控制臺
    的頭像 發表于 08-15 09:24 ?661次閱讀
    火語言RPA如何建立<b class='flag-5'>控制臺</b>應用

    UART調試控制臺在帶有FX3S的定制PCB上無法正常工作怎么解決?

    我正試圖為我們帶有賽普拉斯 FX3S 的定制 PCB 設置調試控制臺。 GPIO 引腳 48 和 49 連接到 UART USB 適配器,然后連接到 PC,通過 COM 端口
    發表于 07-23 06:12

    升級到SDK 2.0,esp8266只會向控制臺打印致命的異常,為什么?

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

    UART傳輸在控制臺中顯示垃圾值是哪里的問題?

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

    藍牙音頻接收模塊在調音臺中的應用方案

    藍牙模塊方案的應用使得調音控制臺實現了無線控制,擺脫了傳統有線連接的束縛。音樂制作人員或演出者只需通過搭載藍牙模塊技術的移動設備(如智能手機、平板電腦)與調音控制臺連接,即可實現對音頻
    的頭像 發表于 06-26 15:26 ?1037次閱讀
    藍牙音頻接收模塊在調音臺中的應用<b class='flag-5'>方案</b>

    通過win10控制臺編譯時,為什么有時需要不斷敲回車才能繼續編譯?如何解決?

    通過win10控制臺編譯項目,控制臺會實時顯示編譯進度,但是有時候出現一個文件編譯好之后,控制臺不自動編譯下一個文件,需要敲一次回車才能繼續,如何解決?
    發表于 06-19 06:35

    請問ESP32C3如何重定向控制臺串口?

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