Я пытаюсь выполнить преобразование цвета между RGB и HSV и обратно в RGB. Это для программы выбора цвета HSV, которую я создаю. Я получаю компоненты HSV. Я хочу установить новую насыщенность строго для своего цвета, поэтому установите значение Saturation равным запрошенному значению. Затем я конвертирую его обратно в RGB. Однако значение оттенка изменилось, и я его не запрашивал. Кроме того, если я постоянно перемещаю ползунок «Насыщенность», оттенок в конечном итоге выравнивает цвет с голубым, желтым или пурпурным, которые имеют оттенки 60, 180 и 300. Есть ли способ, чтобы оттенок не менялся при настройке насыщенности? ?
ПРИМЕЧАНИЕ. getHue, getSaturation и getValue извлекают компонент HSV colorCode.
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