我目前正在使用此代码:
Random randomColor = new Random();
KnownColor[] names = (KnownColor[])Enum.GetValues(typeof(KnownColor));
KnownColor randomColorName = names[randomColor.Next(names.Length)];
Color RandomColor = Color.FromKnownColor(randomColorName);
this.BackColor = RandomColor;
Run Code Online (Sandbox Code Playgroud)
我正在使用它来生成随机颜色并将其设置为我的背景,但我不希望它变黑.
有没有办法从可能的随机颜色中拿走黑色?
选项1:只需使用列表删除方法:
List<KnownColor> namesList = new List<KnownColor>((KnownColor[])Enum.GetValues(typeof(KnownColor)));
namesList.Remove(KnownColor.Black);
KnownColor[] names = namesList.ToArray();
Run Code Online (Sandbox Code Playgroud)
选项2:仅使用列表.他们比阵列有更多的管理可能性:
Random randomColor = new Random();
List<KnownColor> names = new List<KnownColor>((KnownColor[])Enum.GetValues(typeof(KnownColor)));
names.Remove(KnownColor.Black);
this.BackColor = Color.FromKnownColor(names[randomColor.Next(names.Count)]);
Run Code Online (Sandbox Code Playgroud)
添加:您还可以删除所有黑色但未命名为黑色的颜色(例如ActiveCaption):
List<KnownColor> names = new List<KnownColor>((KnownColor[])Enum.GetValues(typeof(KnownColor)));
foreach (KnownColor i in names)
{
if (Color.FromKnownColor(i).ToArgb() == Color.Black.ToArgb()) names.Remove(i);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |