如何在 KnowColor C# 中删除与白色相关的颜色
How to remove white related colors in KnowColor C#
我目前正在使用此方法生成用于 DataGriView 单元格背景颜色的随机已知颜色。
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 单元格背景色形成对比。
我会这样做:
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
对象在您的代码中将始终 return 相同的值。
KnownColor
元素从 28 到 167 是实际颜色,而其余的是控制颜色(如 ActiveCaptionText
、InactiveBorder
等)。如果你真的想要 all 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);
我目前正在使用此方法生成用于 DataGriView 单元格背景颜色的随机已知颜色。
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 单元格背景色形成对比。
我会这样做:
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
对象在您的代码中将始终 return 相同的值。
KnownColor
元素从 28 到 167 是实际颜色,而其余的是控制颜色(如 ActiveCaptionText
、InactiveBorder
等)。如果你真的想要 all 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);