Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态地对数字进行颜色编码_Javascript_Java_C#_Algorithm_Colors - Fatal编程技术网

Javascript 动态地对数字进行颜色编码

Javascript 动态地对数字进行颜色编码,javascript,java,c#,algorithm,colors,Javascript,Java,C#,Algorithm,Colors,我有一个元素序列,每个元素都有自己的ID。ID从1…n运行。我希望共享一个ID的所有元素都以相同的颜色显示 我知道我可以为每个数字定义一个颜色数组,但这是静态的,我真的不知道我会有多少个数字 到目前为止,我已经做到了: private object getIntColorString(int IDNum) { return IDNum.ToString("X6"); } 但是我没有想清楚,因为颜色之间的差别太小了。然后我做了这个: private object getIntColorS

我有一个元素序列,每个元素都有自己的ID。ID从1…n运行。我希望共享一个ID的所有元素都以相同的颜色显示

我知道我可以为每个数字定义一个颜色数组,但这是静态的,我真的不知道我会有多少个数字

到目前为止,我已经做到了:

private object getIntColorString(int IDNum)
{
    return IDNum.ToString("X6");
}
但是我没有想清楚,因为颜色之间的差别太小了。然后我做了这个:

private object getIntColorString(int eventTrainingProgramID)
{
    int colorCode = eventTrainingProgramID * 100; 
    return colorCode.ToString("X6");
}
但是,这会导致许多相同颜色的重复出现


有什么建议吗

好的,颜色可以从
000000
(黑色)变为
ffffff
(白色),因此16777215个不同的值。 假设需要映射[02147483647](0到int.MAX)范围内的int 至颜色范围[016777215]

第一个问题:如果一次有16777217个或更多元素,某些颜色会重复。如果有16777216个或更少的元素,则可以将不同的颜色映射到每个ID

如果您事先知道元素的数量(
#ID
=100,例如),您可以这样开始:

  • col0
    (颜色如果
    ID0
    )可以是(16777215/
    #ID
    )*0
  • col1
    (ID1的颜色)可以是(16777215/
    #ID
    )*1
  • col2
    (ID2的颜色)可以是(16777215/
    #ID
    )*2
以此类推,以保证相邻颜色之间可能存在的最大差异

如果您事先不知道元素的数量,可以将
colorJump
定义为使两种颜色与眼睛不同的最小增量。这样

  • col0
    (颜色如果
    ID0
    )可以是0
  • col1
    ID1
    的颜色)可以是
    col0
    +
    colorJump
  • col2
    ID2
    的颜色)可以是
    col1
    +
    colorJump

等等

@LuigiCortese int.Max…所以你需要。。。0x7fffffff不同颜色?或者一次可以有多少不同的值?如果你这么说。。然后是。。但重复同样的颜色也没关系。。。我可以处理一半甚至1/4的int.MAX…您可以有一个不同颜色的列表(红色、绿色、蓝色等)和一个字典来将它们分配给某个id(
字典
,id和颜色索引)。当ID太多时,您可以开始重用颜色,可能会有一些变化(样式或稍微更改给定颜色的rgb)。考虑为用户提供选择颜色的可能性,或者能够跟踪特定的ID(当它被选中时画得更大胆)等等。首先,你将如何表示颜色?整数?整数的范围是多少?使用模不是更简单吗?就像
id%number\u of_different\u colors=colord\u id
?这样,如果你有两个id,ID0=0和ID1=1,颜色将是相邻的,几乎相同,这取决于id的显示顺序,我真的不知道这是否暗示在问题中。如果它被分类了,真的。