我目前正在使用C#(UWP)中的应用程序和作为副作用(不是我正在处理的主要问题)我需要将一些数字映射到颜色。
现在的限制是: 1)可能的选项数量是可变的。 (因此它不是“四种”颜色或类似的东西,但每次程序运行时都不同)
2)颜色必须足够可辨。
现在,结果可以是一个RGB字节数组。 任何有关如何做到这一点的建议将不胜感激。
答案 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))));