目前我正在使用此方法生成用于DataGriView单元格背景色的随机化KnownColor。
public static Color GetRandomizedKnownColor()
{
Random randomGen = new Random();
KnownColor[] names = (KnownColor[])Enum.GetValues(typeof(KnownColor));
KnownColor randomColorName = names[randomGen.Next(names.Length)];
Color randomColor = Color.FromKnownColor(randomColorName);
return randomColor;
}
现在我想删除所有与白色相关的KnowColors,以便所有可能生成的颜色与我的应用程序中的白色DataGriView单元格背景颜色形成对比。
答案 0 :(得分:1)
我就是这样做的:
static private Random randomGen = new Random();
public static Color GetRandomizedKnownColor()
{
int number;
do
{
number = randomGen.Next(28, 168);
} while (number == (int)KnownColor.White);
return Color.FromKnownColor((KnownColor)number);
}
请注意,您的Random
对象将始终在代码中返回相同的值。
KnownColor
元素是实际颜色,而其余元素是指控件颜色(如ActiveCaptionText
,InactiveBorder
等)。如果您确实想要所有KnownColors 并跳过所有白色(除了“White”之外还有其他[255,255,255]),您应该使用此代码:
Color randomColor;
do
{
randomColor = Color.FromKnownColor((KnownColor)randomGen.Next(1, 175));
} while (randomColor.R + randomColor.G + randomColor.B == 255 * 3);
return randomColor;
如果您想跳过非常浅的颜色,可以使用这样的条件,例如:
} while (randomColor.R + randomColor.G + randomColor.B >= 250 * 3);