c#在控制臺(tái)輸出彩色文字的方法
“Hello World!”的程序?qū)戇^(guò)不少,不過(guò)都是在黑色背景的控制臺(tái)上顯示白色的文字。這次決定寫(xiě)點(diǎn)特別的,讓“Hello World!”變成彩色的文字。
示例代碼如下:
using System;
using System.Runtime.InteropServices;
[assembly:CLSCompliant(true)]
namespace ColorConsole
{
public sealed class HelloWorld
{
private HelloWorld() { }
public static void Main()
{
const UInt32 STD_OUTPUT_HANDLE = unchecked((UInt32)(-11));
IntPtr consoleHandle = NativeMethods.GetStdHandle(STD_OUTPUT_HANDLE);
string s = "Hello World!";
for (int i = 0; i < s.Length; i++)
{
NativeMethods.SetConsoleTextAttribute(consoleHandle, (ushort)(i + 1));
Console.Write(s[i]);
}
Console.ReadLine();
}
}
class NativeMethods
{
private NativeMethods() { }
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr GetStdHandle(UInt32 type);
[DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.U1)]
public static extern bool SetConsoleTextAttribute(IntPtr consoleHandle, ushort attributes);
}
}
主要用到的方法是GetStdHandle與SetConsoleTextAttribute。前者取得控制臺(tái)的句柄,后者設(shè)置控制臺(tái)的文字顏色。
循環(huán)語(yǔ)句中將字符串的每個(gè)字符設(shè)置為不同的顏色,逐一顯示出來(lái),最終成為一串彩色的文字。
至于代碼的實(shí)際用途嗎,我想在控制臺(tái)上輸出日志的時(shí)候可能會(huì)有作用。尤其是要醒目地顯示不同類(lèi)型日志的場(chǎng)合下,比如可以將錯(cuò)誤,警告和信息類(lèi)型的日志分別用紅色,黃色與通常的白色區(qū)別開(kāi)來(lái)。
- c#取得控制臺(tái)應(yīng)用程序根目錄
- C#控制臺(tái)輸出進(jìn)度和百分比的實(shí)例代碼
- C#控制臺(tái)帶參數(shù)程序源碼編寫(xiě)實(shí)例講解
- C#控制臺(tái)程序中處理2個(gè)關(guān)閉事件的代碼實(shí)例
- c#實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)udp異步通信程序示例
- C#控制臺(tái)下測(cè)試多線程的方法
- C#控制臺(tái)進(jìn)行文件讀寫(xiě)的方法
- C#控制臺(tái)程序?qū)崿F(xiàn)開(kāi)啟、關(guān)閉SQLServer服務(wù)的代碼分享
- c#入門(mén)之枚舉和結(jié)構(gòu)體使用詳解(控制臺(tái)接收字符串以相反的方向輸出)
- C# Socket實(shí)現(xiàn)簡(jiǎn)單控制臺(tái)案例
相關(guān)文章
C#實(shí)現(xiàn)獲取設(shè)置IP地址小工具
c# 開(kāi)發(fā),方便更改IP地址。由于公司和家里的ip設(shè)置不一樣,公司要求手動(dòng)設(shè)置,在家可以自動(dòng)獲取IP,切都是無(wú)線網(wǎng)絡(luò),為了方便操作,故做了這個(gè)小工具!2015-06-06.net 通過(guò) WebAPI 調(diào)用nsfwjs 進(jìn)行視頻鑒別功能
這篇文章主要介紹了.net 通過(guò) WebAPI 調(diào)用 nsfwjs 進(jìn)行視頻鑒別,文末給大家提到了FFMPEG獲取視頻關(guān)鍵幀并保存成jpg圖像的相關(guān)知識(shí),需要的朋友可以參考下2021-09-09c#中的interface abstract與virtual介紹
abstract 與virtual : 方法重寫(xiě)時(shí)都使用 override 關(guān)鍵字,interface中的方法和abstract方法都要求實(shí)現(xiàn)2013-07-07c#使用Socket發(fā)送HTTP/HTTPS請(qǐng)求的實(shí)現(xiàn)代碼
這篇文章主要介紹了c#使用Socket發(fā)送HTTP/HTTPS請(qǐng)求的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-09-09c#入門(mén)之循環(huán)語(yǔ)句使用詳解(for循環(huán)、do/while)
這篇文章主要介紹了c#入門(mén)之循環(huán)語(yǔ)句使用詳解,有for循環(huán)和do/while的示例,需要的朋友可以參考下2014-04-04C#使用FolderBrowserDialog類(lèi)實(shí)現(xiàn)選擇打開(kāi)文件夾方法詳解
這篇文章主要介紹了C#選擇文件夾/打開(kāi)文件夾/瀏覽文件夾等代碼方法,大家參考使用2013-11-11C#正則匹配RegexOptions選項(xiàng)的組合使用方法
本文主要簡(jiǎn)單介紹RegexOptions各種選項(xiàng)的作用,并介紹如何組合使用,為初學(xué)者解除一些疑惑。2016-04-04DevExpress TreeList 常見(jiàn)問(wèn)題解決方法
這篇文章主要介紹了DevExpress TreeList 常見(jiàn)問(wèn)題解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12C#如何將查詢到的數(shù)據(jù)庫(kù)里面的數(shù)據(jù)輸出到textbox控件
這篇文章主要介紹了C#如何將查詢到的數(shù)據(jù)庫(kù)里面的數(shù)據(jù)輸出到textbox控件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07