我试图用Java实现我的颜色编辑器。它应该是一个简单的软件。用户将以十六进制RGB输入颜色,例如:0xFF00FF。我知道如何计算色调,色度,饱和度和亮度,但是如何将Hue值添加或减去该给定颜色?这是个谜。如何以编程方式将Hue添加到给定颜色?
是否有任何算法或公式可供使用?
现在我使用这种方法,但我认为结果与Adobe Photoshop有所不同。
public void addHue(float addHue) {
float c = getChroma();
addHue %= 6;
if (addHue < 2) {
float n = 1 - green;
green = green + addHue * n;
} else if (addHue < 4) {
addHue -= 2;
float n = 1 - blue;
blue = blue + addHue * n;
} else if (addHue < 6) {
addHue -=4;
float n = 1 - red;
red = red + addHue * n;
}
if (green > 1) green = 1;
else if (green < 0) green = 0;
if (red > 1) red = 1;
else if (red < 0) red = 0;
if (blue > 1) blue = 1;
else if (blue < 0) blue = 0;
}
你为什么要添加色相?你想达到什么目的?这是一个用户控件吗? – 2011-03-22 09:20:42