我需要生成随机颜色名称,例如"红色","白色"等.我该怎么办?我可以像这样生成随机颜色:
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)
忽略你是在追求颜色的事实 - 你真的只想要一个可能的值列表,然后从该列表中取一个随机值.
然后唯一棘手的问题是找出你想要的那组颜色.由于妊高征提到的,还有KnownColor
-或者你可以找出类型的所有公共静态属性Color
的内Color
结构,并得到了他们的名字.这取决于你想要做什么.
请注意,随机性本身可能有点尴尬 - 如果您选择多种随机颜色,您可能想要使用单个Random`实例.不幸的是,它不是线程安全的,这使得事情可能更加复杂.有关更多信息,请参阅我的随机性文章.
归档时间: |
|
查看次数: |
79055 次 |
最近记录: |