将数字映射到颜色

时间:2018-01-24 07:55:39

标签: c# colors

我目前正在使用C#(UWP)中的应用程序和作为副作用(不是我正在处理的主要问题)我需要将一些数字映射到颜色。

现在的限制是: 1)可能的选项数量是可变的。 (因此它不是“四种”颜色或类似的东西,但每次程序运行时都不同)

2)颜色必须足够可辨。

现在,结果可以是一个RGB字节数组。 任何有关如何做到这一点的建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

这样的代码怎么样?

        List<int> nums = new List<int> { 130049, 652, 832 }; //your numbers to map
        List<byte[]> colors = new List<byte[]>(); //to store byte[] objects
        int squared = 255 * 255;

        foreach (int n in nums)
        {
            var RGBBytes = new byte[3] { 0, 0, 0 }; //RGB values

            decimal quotient = n / squared;
            var mod = n % squared;
            byte theByte = (byte)Math.Floor(quotient);
            RGBBytes[0] = theByte;

            quotient = mod / 255;
            mod = mod % 255;
            theByte = (byte)Math.Floor(quotient);
            RGBBytes[1] = theByte;

            theByte = (byte)Math.Floor((decimal)mod);
            RGBBytes[2] = theByte;

            colors.Add(RGBBytes); //saving RGB values for a color
        }

        Console.WriteLine(string.Join("\n", colors.Select(c => string.Join("-", c))));