产生除黑色外的随机颜色

时间:2018-08-27 05:33:33

标签: c# xaml xamarin.forms xamarin.android

我在Xamarin项目中使用此方法来生成随机颜色

Random random = new Random();
public string BoColor
{
    get
    {
        return String.Format("#{0:X6}", random.Next(0x808080) & 0x7E7E7E);
    }
}

但是我希望生成不带黑色的颜色,在这方面会有所帮助。

预先感谢您的支持。

2 个答案:

答案 0 :(得分:0)

有很多可能的方法来实现这一目标。您可以开发这样的方法

static string generateColor()
{
    Random random = new Random();
    string color = string.Empty;
    do
    {
        color = string.Format("#{0:X6}", random.Next(0x808080) & 0x7E7E7E);
    }
    while (color == "#000000");

    return color;
}

答案 1 :(得分:0)

要扩展@Gaurang Dave所说的内容,您可以使用IsAlmostBlack(string color)设置自己的阈值:

    private static string GenerateColor()
    {
        Random random = new Random();
        string color;
        do
        {
            color = $"#{random.Next(0x808080) & 0x7E7E7E:X6}";
        }
        while (IsAlmostBlack(color));

        return color;
    }

    private static bool IsAlmostBlack(string color)
    {
        // #XX0000
        int red = int.Parse(color.Substring(1, 2), NumberStyles.HexNumber);
        // #00XX00
        int green = int.Parse(color.Substring(3, 2), NumberStyles.HexNumber);
        // #0000XX
        int blue = int.Parse(color.Substring(5, 2), NumberStyles.HexNumber);

        // Checks if all values are under a certain value (here 50[decimal])
        return red < 0x32 && green < 0x32 && blue < 0x32;
    }

您当然也可以使用小数:

        // Checks if all values are under a certain value (here 50[decimal])
        return red < 50 && green < 50 && blue < 50;