C# 控制台应用程序输出颜色字体[更正版]
生活随笔
收集整理的這篇文章主要介紹了
C# 控制台应用程序输出颜色字体[更正版]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先感謝院子里的“yanxinchen”,之前的方法是通過c#調用系統api實現的,相比之下我的有點畫蛇添足了,哈哈。
最佳解決方案的代碼:
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Hello, color text!");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Hello, color text!");
Console.ReadKey();
}
效果如圖:
=================================================================================
我之前的代碼如下(已過時):
控制臺應用程序字體本身不能輸出帶顏色的字體,所有就需要調用系統的api實現,下面是一個封裝好的類,另賦調用的方法,使用起來很方便,效果如圖:
封裝調用系統api的類ConsoleColor.cs代碼如下:
ConsoleColor.cs using System.Runtime.InteropServices;namespace Test
{
/// Summary description for ConsoleColor.
public class ConsoleColor
{
private int hConsoleHandle;
private COORD ConsoleOutputLocation;
private CONSOLE_SCREEN_BUFFER_INFO ConsoleInfo;
private int OriginalColors;
private const int STD_OUTPUT_HANDLE = -11;
[DllImport("kernel32.dll", EntryPoint = "GetStdHandle", SetLastError = true,
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
private static extern int GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll", EntryPoint = "GetConsoleScreenBufferInfo",
SetLastError = true, CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
private static extern int GetConsoleScreenBufferInfo(int hConsoleOutput,
ref CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
[DllImport("kernel32.dll", EntryPoint = "SetConsoleTextAttribute",
SetLastError = true, CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
private static extern int SetConsoleTextAttribute(int hConsoleOutput,
int wAttributes);
public enum Foreground
{
Blue = 0x00000001,
Green = 0x00000002,
Red = 0x00000004,
Intensity = 0x00000008
}
public enum Background
{
Blue = 0x00000010,
Green = 0x00000020,
Red = 0x00000040,
Intensity = 0x00000080
}
[StructLayout(LayoutKind.Sequential)]
private struct COORD
{
short X;
short Y;
}
[StructLayout(LayoutKind.Sequential)]
private struct SMALL_RECT
{
short Left;
short Top;
short Right;
short Bottom;
}
[StructLayout(LayoutKind.Sequential)]
private struct CONSOLE_SCREEN_BUFFER_INFO
{
public COORD dwSize;
public COORD dwCursorPosition;
public int wAttributes;
public SMALL_RECT srWindow;
public COORD dwMaximumWindowSize;
}
// Constructor.
public ConsoleColor()
{
ConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();
ConsoleOutputLocation = new COORD();
hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleHandle, ref ConsoleInfo);
OriginalColors = ConsoleInfo.wAttributes;
}
public void TextColor(int color)
{
SetConsoleTextAttribute(hConsoleHandle, color);
}
public void ResetColor()
{
SetConsoleTextAttribute(hConsoleHandle, OriginalColors);
}
}
}
在Main方法的調用代碼如下:
ConsoleColor TextChange = new ConsoleColor();Console.WriteLine("Original Colors");
Console.WriteLine("Press Enter to Begin");
Console.ReadLine();
TextChange.TextColor((int)ConsoleColor.Foreground.Green +
(int)ConsoleColor.Foreground.Intensity);
Console.WriteLine("THIS TEXT IS GREEN");
Console.WriteLine("Press Enter to change colors again");
Console.ReadLine();
TextChange.TextColor((int)ConsoleColor.Foreground.Red +
(int)ConsoleColor.Foreground.Blue +
(int)ConsoleColor.Foreground.Intensity);
Console.WriteLine("NOW THE TEXT IS PURPLE");
Console.WriteLine("Press Enter to change colors again");
Console.ReadLine();
TextChange.TextColor((int)ConsoleColor.Foreground.Blue +
(int)ConsoleColor.Foreground.Intensity +
(int)ConsoleColor.Background.Green +
(int)ConsoleColor.Background.Intensity);
Console.WriteLine("NOW THE TEXT IS BLUE AND BACKGROUND OF IT IS GREEN");
Console.WriteLine("Press Enter change everything back to normal");
Console.ReadLine();
TextChange.ResetColor();
Console.WriteLine("Back to Original Colors");
Console.WriteLine("Press Enter to Terminate");
Console.ReadLine();
總結
以上是生活随笔為你收集整理的C# 控制台应用程序输出颜色字体[更正版]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb随机显示图片
- 下一篇: C# USB设备的管理(Devcon和注