欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#在控制台输出彩色文字的方法

程序员文章站 2023-12-04 15:43:31
“hello world!”的程序写过不少,不过都是在黑色背景的控制台上显示白色的文字。这次决定写点特别的,让“hello world!”变成彩色的文字。 示例代码如下:...

“hello world!”的程序写过不少,不过都是在黑色背景的控制台上显示白色的文字。这次决定写点特别的,让“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。前者取得控制台的句柄,后者设置控制台的文字颜色。

循环语句中将字符串的每个字符设置为不同的颜色,逐一显示出来,最终成为一串彩色的文字。

至于代码的实际用途吗,我想在控制台上输出日志的时候可能会有作用。尤其是要醒目地显示不同类型日志的场合下,比如可以将错误,警告和信息类型的日志分别用红色,黄色与通常的白色区别开来。