c#在控制臺輸出彩色文字的方法
“Hello World!”的程序?qū)戇^不少,不過都是在黑色背景的控制臺上顯示白色的文字。這次決定寫點特別的,讓“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。前者取得控制臺的句柄,后者設(shè)置控制臺的文字顏色。
循環(huán)語句中將字符串的每個字符設(shè)置為不同的顏色,逐一顯示出來,最終成為一串彩色的文字。
至于代碼的實際用途嗎,我想在控制臺上輸出日志的時候可能會有作用。尤其是要醒目地顯示不同類型日志的場合下,比如可以將錯誤,警告和信息類型的日志分別用紅色,黃色與通常的白色區(qū)別開來。
相關(guān)文章
.net 通過 WebAPI 調(diào)用nsfwjs 進行視頻鑒別功能
這篇文章主要介紹了.net 通過 WebAPI 調(diào)用 nsfwjs 進行視頻鑒別,文末給大家提到了FFMPEG獲取視頻關(guān)鍵幀并保存成jpg圖像的相關(guān)知識,需要的朋友可以參考下2021-09-09c#中的interface abstract與virtual介紹
abstract 與virtual : 方法重寫時都使用 override 關(guān)鍵字,interface中的方法和abstract方法都要求實現(xiàn)2013-07-07c#使用Socket發(fā)送HTTP/HTTPS請求的實現(xiàn)代碼
這篇文章主要介紹了c#使用Socket發(fā)送HTTP/HTTPS請求的實現(xiàn)代碼,需要的朋友可以參考下2017-09-09c#入門之循環(huán)語句使用詳解(for循環(huán)、do/while)
這篇文章主要介紹了c#入門之循環(huán)語句使用詳解,有for循環(huán)和do/while的示例,需要的朋友可以參考下2014-04-04C#使用FolderBrowserDialog類實現(xiàn)選擇打開文件夾方法詳解
這篇文章主要介紹了C#選擇文件夾/打開文件夾/瀏覽文件夾等代碼方法,大家參考使用2013-11-11C#如何將查詢到的數(shù)據(jù)庫里面的數(shù)據(jù)輸出到textbox控件
這篇文章主要介紹了C#如何將查詢到的數(shù)據(jù)庫里面的數(shù)據(jù)輸出到textbox控件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07