创造展开的颜色

时间:2012-10-15 14:17:01

标签: .net colors microsoft-chart-controls

我正在使用Microsoft Chart Controls绘制图形,我正在尝试为图形中的每一行生成不同的颜色(最多约15-20种颜色)。如果要绘制14条线,我想为每条线创建不同的颜色。

现在,我尝试使用HSV:

private Color GetSeriesColor(int seriesIndex,
                             int seriesCount)
{
    return ColorHelper.FromHsv(360.0*seriesIndex/seriesCount, 1, 1);
}

然而问题是绿色和蓝色看起来非常相似:

enter image description here

C#中是否有办法创建与人类不同的x颜色?

1 个答案:

答案 0 :(得分:1)

您可以尝试双指针,每个指针指向光谱中的不同位置。至少这样你最终会得到交替的颜色。

private Color GetSeriesColor( int seriesIndex, 
                              int seriesCount, 
                              int steps ) {
    return ColorHelper.FromHsv( 
        ( 360.0 / steps ) * ( 1.0 * seriesIndex / seriesCount ) + 
        ( ( seriesIndex % steps ) * ( 360.0 / steps ) ),
        1, 1 );
}

致电代码:

GetSeriesColor( 5, 18, 2 );

这将创建两个“指针”。第一个将从位置0开始,第二个将从位置180开始。该函数将在两个指针之间交替,为图形提供一种“棋盘格”外观。

如果你不喜欢这种效果,你最好的选择可能是一个带有x个预定义颜色的调色板(存储在一个数组中),当你到达终点时循环(或者可能添加阴影,例如更暗)颜色为浅色)。

修改
不过,我会补充一点,使用颜色编码无疑是一种糟糕的设计选择。如果可能的话,最好直接在图表上使用标签。超过大约8种颜色,人眼开始难以区分它们。请参阅https://ux.stackexchange.com/questions/17964/how-many-visually-distinct-colors-can-accurately-be-associated-with-a-separate