如何随机选择一种已知的控制台颜色用于文本?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何随机选择一种已知的控制台颜色用于文本?相关的知识,希望对你有一定的参考价值。

我知道如何为控制台文本设置颜色

Console.ForegroundColor = ConsoleColor.Cyan;

任何人都可以想到我可以将它随机化吗?它不一定是完全随机的,但差异会有所帮助。

答案
private static Random _random = new Random();
private static ConsoleColor GetRandomConsoleColor()
{
    var consoleColors = Enum.GetValues(typeof(ConsoleColor));
    return (ConsoleColor)consoleColors.GetValue(_random.Next(consoleColors.Length));
}

private static void Main(string[] args)
{
    Console.ForegroundColor = GetRandomConsoleColor();
    Console.WriteLine("Hello World!");
}

一种简单而有效的方法是简单地从ConsoleColor枚举中选择一个随机值。

另一答案
Console.ForegroundColor=(ConsoleColor)r.Next(0,16);
Console.BackgroundColor = (ConsoleColor)r.Next(0,16);

选择背景或文本颜色中的一个,您必须将r声明为随机:

Random r = new Random();

或作为主要的静态。

这是我使用上面代码编写的简单代码的示例:

            while (true)
        {
            Console.ForegroundColor = (ConsoleColor)r.Next(0,16);
            Console.BackgroundColor = (ConsoleColor)r.Next(0,16);
            Console.Write(r.Next(0, 2));
        }

它基本上以不同的文本颜色和背景颜色打印0和1。

另一答案
ConsoleColor getRandomColor()
{
    return (ConsoleColor)(new Random().Next(Enum.GetNames(typeof(ConsoleColor)).Length)
}

编辑:正如我的评论者所说,每次你需要一个新的随机颜色时,你不应该构建一个new Random。相反,你应该只在某处保存Random,并应该像这样使用它:

Random rand = new Random();
ConsoleColor getRandomColor()
{
    return (ConsoleColor)(rand.Next(Enum.GetNames(typeof(ConsoleColor)).Length);
}
另一答案

干得好。

private static void Main(string[] args)
{
    Random random = new Random();

    var query =
        typeof(ConsoleColor)
            .GetFields(BindingFlags.Static | BindingFlags.Public)
            .Select(fieldInfo => (ConsoleColor)fieldInfo.GetValue(null))
            .ToArray();

    Console.BackgroundColor = query.ElementAt(random.Next(query.Length));

    Console.WriteLine(Console.BackgroundColor);

    Console.Read();
}
另一答案

最简单的方法:(ConsoleColor)(new Random()).Next(0,15)返回ConsoleColor对象。提示:如果要限制颜色,请尝试使用!=运算符并在Visual Studio中检出ConsoleColor Enum。

另一答案

这将选择随机颜色。请注意,_randomRandom的实例。

Console.ForegroundColor = (ConsoleColor)_random.Next(15);

以上是关于如何随机选择一种已知的控制台颜色用于文本?的主要内容,如果未能解决你的问题,请参考以下文章

使用颜色选择器更改片段中edittext的背景颜色

如何在单击时将 HTML 中按钮的文本颜色更改为随机颜色?

如何生成特定颜色的随机阴影列表? (例如橙色的随机阴影)

如果 EditText 字段中有文本,如何更改 backgroundtint 颜色?

在片段中设置文本颜色

UISegmentedControl 值更改时如何仅更改文本颜色?