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