问题描述
我的英语可能不太好,如果我写的不好或不正确,请告诉我。
我正在用 C# 创建一个 Lolcat。我已经完成了输出功能,但是遇到了一个问题:有些终端不支持256(8位)色,这是Lolcat的最低要求。在 Python 中,由于 Rich 模块,我可以找到什么 颜色 系统(无颜色,标准( 16 色,4 位)、256(8 位) 或 TrueColor(16m,24 位)) 使用以下脚本:
#!/usr/bin/env python3
import rich
from rich.console import Console
console = Console()
def detect_color_support():
"""
Detects if terminal supports following colors: Standard (16 colors),256 and True (16m) colors
:return: detection results in tuple (Standard,256,True)
"""
supports_standard_colors = False
supports_256_colors = False
supports_true_colors = False
if console.color_system == "truecolor":
supports_standard_colors = True
supports_256_colors = True
supports_true_colors = True
elif console.color_system == "256":
supports_standard_colors = True
supports_256_colors = True
elif console.color_system == "standard":
supports_standard_colors = True
return supports_standard_colors,supports_256_colors,supports_true_colors
但是如何在 C# 中做到这一点? 有 Python 的 Rich 灵感库,名为 Spectre.Console,但以相同方式使用时:
using System;
using Spectre.Console;
namespace CCM
{
class Program
{
private static Tuple<int?,string> ColorSystemConverter(ColorSystem colorSystem) => (int)colorSystem switch
{
1 => new Tuple<int?,string>(3,"Legacy"),2 => new Tuple<int?,string>(4,"Standard"),3 => new Tuple<int?,string>(8,"256"),4 => new Tuple<int?,string>(24,"TrueColor"),_ => new Tuple<int?,string>(null,"NoColors"),};
static void Main()
{
Console.WriteLine(ColorSystenConverter(AnsiConsole.Console.Profile.Capabilities.ColorSystem).Item2);
Console.ReadLine();
}
}
}
当我在 CMD(命令提示符,但不是在 Windows 终端)中运行它时,它会打印“TrueColor”,但据我所知CMD 不支持 24 位颜色(至少是我的)。是否有任何有效且有效的方法来查看控制台功能,包括Ansi 支持、Unicode 支持等?
附加信息:
操作系统:Windows 10
版本/内部版本:10.0.18363.0
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)