Console输出彩色字体(源码)
先是consolecolour.cs
类,用来调用颜色
// ConsoleColour.cs
using System;
// need this to make API calls
using System.Runtime.InteropServices;
namespace PFitzsimons.ConsoleColour
{
/// <summary>
/// Static class for console colour manipulation.
/// </summary>
public class ConsoleColour
{
// constants for console streams
const int STD_INPUT_HANDLE = -10;
const int STD_OUTPUT_HANDLE = -11;
const int STD_ERROR_HANDLE = -12;
[DllImportAttribute("Kernel32.dll")]
private static extern IntPtr GetStdHandle
(
int nStdHandle // input, output, or error device
);
[DllImportAttribute("Kernel32.dll")]
private static extern bool SetConsoleTextAttribute
(
IntPtr hConsoleOutput, // handle to screen buffer
int wAttributes // text and background colors
);
// colours that can be set
[Flags]
public enum ForeGroundColour
{
Black = 0x0000,
Blue = 0x0001,
Green = 0x0002,
Cyan = 0x0003,
Red = 0x0004,
Magenta = 0x0005,
Yellow = 0x0006,
Grey = 0x0007,
White = 0x0008
}
// class can not be created, so we can set colours
// without a variable
private ConsoleColour() {}
public static bool SetForeGroundColour()
{
// default to a white-grey
return SetForeGroundColour(ForeGroundColour.Grey);
}
public static bool SetForeGroundColour(
ForeGroundColour foreGroundColour)
{
// default to a bright white-grey
return SetForeGroundColour(foreGroundColour, true);
}
public static bool SetForeGroundColour(
ForeGroundColour foreGroundColour,
bool brightColours)
{
// get the current console handle
IntPtr nConsole = GetStdHandle(STD_OUTPUT_HANDLE);
int colourMap;
// if we want bright colours OR it with white
if (brightColours)
colourMap = (int)foreGroundColour |
(int)ForeGroundColour.White;
else
colourMap = (int)foreGroundColour;
// call the api and return the result
return SetConsoleTextAttribute(nConsole, colourMap);
}
}
}
然后是主程序
// Console.cs
using System;
// we want color output
using PFitzsimons.ConsoleColour;
namespace MyApp
{
public class MyApp
{
public static void Main()
{
ConsoleColour.SetForeGroundColour(ConsoleColour.ForeGroundColour.Green);
Console.WriteLine("Text in green");
ConsoleColour.SetForeGroundColour(ConsoleColour.ForeGroundColour.Red);
Console.WriteLine("Text in red");
// reset console back to a default
ConsoleColour.SetForeGroundColour(ConsoleColour.ForeGroundColour.Yellow, true);
//ConsoleColour.SetForeGroundColour();
//ConsoleColour.SetForeGroundColour(ConsoleColour.ForeGroundColour.Yellow,false);
}
}
}
分别存成ConsoleColour.cs
和Console.cs
,然后提示符下编译
CSC /t:library ConsoleColour.cs
CSC /r:ConsoleColour.dll Console.cs
生成console.exe可执行文件 执行后看看效果吧!