我正在尝试在RGB和HSV之间执行颜色转换并返回RGB。这是我正在创建的HSV颜色选择器程序。我检索HSV组件。我想严格按照我的颜色设置新的饱和度,因此将饱和度值设置为等于请求的值。然后我将它转换回RGB。然而,Hue的价值已经改变,我没有要求它。此外,如果我不断移动我的饱和度滑块,色调最终会将颜色与青色,黄色或洋红色对齐,颜色为60,180和300.设置饱和度时是否有一种方法可以使色调不变化?
注意:getHue,getSaturation和getValue正在检索colorCode的HSV组件
public void setSaturation(float s)
{
float hsv[];
hsv = new float[3];
Log.i("Before change",String.valueOf("H: "+getHue()+" S: "+getSaturation()+" V: "+getValue()));
Color.RGBToHSV(getRed(), getGreen(), getBlue(), hsv);
hsv[1] = s;
colorCode = Color.HSVToColor(hsv);
Log.i("After change",String.valueOf("H: "+getHue()+" S: "+getSaturation()+" V: "+getValue()));
}
变更前(21558):H:28.771929 S:0.67058825 V:1.0
变更后(21558):H:28.928572 S:0.65882355 V:1.0