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

 更新时间:2013年03月15日 10:50:21   作者:  
c#在控制台输出彩色文字的方法,需要的朋友可以参考一下

“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。前者取得控制台的句柄,后者设置控制台的文字颜色。

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

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

相关文章

  • C#利用TreeView控件实现目录跳转

    C#利用TreeView控件实现目录跳转

    这篇文章主要为大家详细介绍了C#润滑利用TreeView控件实现目录跳转功能,文中的示例代码讲解详细,感兴趣的小伙伴可以动手尝试一下
    2022-07-07
  • 一文详解C#中方法重载的底层玩法

    一文详解C#中方法重载的底层玩法

    最近在看C++的方法重载,就在想C#中的重载底层是怎么玩的。毕竟很多朋友应该知道C是不支持重载的。本文将来详细讲讲C#中方法重载的底层玩法,感兴趣的可以了解一下<BR>
    2022-06-06
  • C#最小二乘法拟合曲线成直线的实例

    C#最小二乘法拟合曲线成直线的实例

    这篇文章主要介绍了C#最小二乘法拟合曲线成直线的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C#使用Effects给图片增加阴影效果

    C#使用Effects给图片增加阴影效果

    这篇文章介绍了C#使用Effects给图片增加阴影效果的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C#统计C、C++及C#程序代码行数的方法

    C#统计C、C++及C#程序代码行数的方法

    这篇文章主要介绍了C#统计C、C++及C#程序代码行数的方法,较为详细的分析了C#统计文本文件的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C# 从字符串中分离文件路径、文件名及扩展名的操作

    C# 从字符串中分离文件路径、文件名及扩展名的操作

    在C#中,处理文件时经常需要分离文件路径、文件名和扩展名,通过使用Microsoft.Win32命名空间和字符串处理方法如Substring、IndexOf()和LastIndexOf(),可以有效地获取和操作这些信息,本文介绍C# 字符串中分离文件路径,感兴趣的朋友一起看看
    2024-09-09
  • C#实现多选项卡的浏览器控件

    C#实现多选项卡的浏览器控件

    这篇文章主要为大家详细介绍了C#实现多选项卡的浏览器控件的相关资料,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • C# Chart绘制简单图形波形

    C# Chart绘制简单图形波形

    这篇文章主要为大家详细介绍了C# Chart绘制简单图形波形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C# SkinEngine控件 给窗体添加皮肤的方法

    C# SkinEngine控件 给窗体添加皮肤的方法

    我在网上搜索过,给窗体使用皮肤的方法有很多,不过C#中这种方法最简单。利用 IrisSkin2.dll 所提供的控件 SkinEngine 来为窗体添加皮肤。
    2013-04-04
  • C#异步调用示例详解

    C#异步调用示例详解

    这篇文章主要为大家详细介绍了C#异步调用的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论