如何在C#中生成随机颜色名称

use*_*674 50 c# random colors

我需要生成随机颜色名称,例如"红色","白色"等.我该怎么办?我可以像这样生成随机颜色:

Random randonGen = new Random();
Color randomColor = Color.FromArgb(randonGen.Next(255), randonGen.Next(255), 
randonGen.Next(255));
Run Code Online (Sandbox Code Playgroud)

但是我需要名字,而不是像这样生成的所有颜色都有一个已知名称.

谢谢

Kon*_*lph 84

使用Enum.GetValue检索的值KnownColor枚举,并获得一个随机值:

Random randomGen = new Random();
KnownColor[] names = (KnownColor[]) Enum.GetValues(typeof(KnownColor));
KnownColor randomColorName = names[randomGen.Next(names.Length)];
Color randomColor = Color.FromKnownColor(randomColorName);
Run Code Online (Sandbox Code Playgroud)


Pih*_*Pih 11

取一个随机值并从KnownColor枚举中获取.

可能是这样的:

System.Array colorsArray = Enum.GetValues(typeof(KnownColor));
KnownColor[] allColors = new KnownColor[colorsArray.Length];

Array.Copy(colorsArray, allColors, colorsArray.Length);
// get a randon position from the allColors and print its name.
Run Code Online (Sandbox Code Playgroud)

  • 复制阵列是多余的. (4认同)

Jon*_*eet 6

忽略你是在追求颜色的事实 - 你真的只想要一个可能的值列表,然后从该列表中取一个随机值.

然后唯一棘手的问题是找出你想要的那组颜色.由于妊高征提到的,还有KnownColor-或者你可以找出类型的所有公共静态属性Color的内Color结构,并得到了他们的名字.这取决于你想要做什么.

请注意,随机性本身可能有点尴尬 - 如果您选择多种随机颜色,您可能想要使用单个Random`实例.不幸的是,它不是线程安全的,这使得事情可能更加复杂.有关更多信息,请参阅我的随机性文章.


Dav*_*vid 5

听起来你只需要KnownColor枚举中的随机颜色.