要用不同颜色表示不同的温度(范围为(0,maxv)),需要定义参照的色标,就如同画图中自定义颜色时的颜色条。
现有一段代码如下,是基于红色系的定义:
                  if(f>=maxv) clr = RGB(255,255,255);
else if(f<=0) clr = RGB(0,0,0);
else if(f<=maxv/2){
t=(int)((maxv/2-f)*255/(maxv/2));
clr=RGB(255,t,t);
}
else {
t=(int)((f-maxv/2)*255/(maxv/2));
clr=RGB(255-t,0,0);
}这样的方法定义出来的色标,在区别度上不是很理想,因为是单色的;
各位有什么好的方法写出多色的色标,使的区别度变大;
这恐怕也是要有美感吧:)

解决方案 »

  1.   

    这里有个色彩心理学的问题,颜色是分冷暖的,一般说来,蓝色的感觉要冷一点,红色的颜色要感觉暖和一点,绿色为中性,不冷也不暖,在用颜色表示温度的时候,我到感觉可以参考Winmap的音量控制上的色彩模型。颜色从(255,0,0)开始,一直过渡到(0,255,0)(中间值),再过渡到(0,0,255)就可以。
      

  2.   

    谢谢 sunrise(日出江花红胜火)!
    谁还有什么好的想法,请告知。
      

  3.   

    给有兴趣的朋友看看,下面的颜色定义!
    如果谁还有更好的,欢迎拿出来共享! int R,G,B;
    int y=int(f);
    int x;
    x=int((918*y/550));
    if(x<0){
    R=0;
    G=0;
    B=153;
    }
    else if(x>=0&&x<102){
    R=0;
    G=0;
    B=x+153;
    }
    else if(x>=102&&x<357){
    R=0;
    G=x-102;
    B=255;
    }
    else if(x>=357&&x<612){
    R=x-357;
    G=255;
    B=612-x;
    }
    else if(x>=612&&x<867){
    R=255;
    G=867-x;
    B=0;
    }
    else if(x>=867&&x<=918){

    R=1122-x;
    G=0;
    B=0;
    }
    clr=RGB(R,G,B);