如何在KnowColor C中删除白色相关颜色#

时间:2016-02-04 05:53:39

标签: c# datagridview datagridviewcellstyle

目前我正在使用此方法生成用于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单元格背景颜色形成对比。

1 个答案:

答案 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对象将始终在代码中返回相同的值。

从28到167的

KnownColor元素是实际颜色,而其余元素是指控件颜色(如ActiveCaptionTextInactiveBorder等)。如果您确实想要所有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);