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

时间:2021-07-17 03:46:51 

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

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

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

标签:控制台,彩色文字
0
投稿

猜你喜欢

  • java内部类的定义与分类示例详解

    2022-07-01 20:16:47
  • Java实战之基于swing的QQ邮件收发功能实现

    2023-11-15 01:34:26
  • Java 中的 clone( ) 和 new哪个效率更高

    2023-11-09 05:27:44
  • C#实现查杀本地与远程进程的方法

    2023-08-10 08:01:30
  • Unity使用LineRender断笔写字

    2023-01-07 09:29:38
  • Java的Swing编程中使用SwingWorker线程模式及顶层容器

    2021-09-09 08:45:06
  • Java编程实现对十六进制字符串异或运算代码示例

    2023-11-06 15:58:15
  • Logback 使用TurboFilter实现日志级别等内容的动态修改操作

    2022-06-10 04:17:53
  • Android开发中使用颜色矩阵改变图片颜色,透明度及亮度的方法

    2023-04-28 20:42:22
  • Spring Boot教程之必须了解的核心概念

    2022-07-15 14:17:24
  • 详解Spring Cloud Gateway修改请求和响应body的内容

    2022-12-03 04:40:05
  • C# 使用鼠标点击对Chart控件实现数据提示效果

    2023-03-05 14:20:06
  • Android常用的图片加载库

    2021-06-04 18:56:30
  • C#中重载重写和覆盖的定义与区别

    2022-04-23 09:25:34
  • 我用java实现了王者荣耀的皮肤和英雄技能

    2022-01-13 13:44:09
  • Javacsv实现Java读写csv文件

    2022-02-16 01:10:15
  • Java安全-ClassLoader

    2023-08-18 02:12:21
  • SpringCloud Alibaba项目实战之nacos-server服务搭建过程

    2022-02-28 02:43:26
  • C#数据导入到EXCEL的方法

    2023-01-16 02:27:26
  • Java实现有限状态机的推荐方案分享

    2022-01-07 15:54:27
  • asp之家 软件编程 m.aspxhome.com