【问题标题】:Java: Cycling through a particular color with HSVJava:使用 HSV 在特定颜色中循环
【发布时间】:2015-11-08 16:44:38
【问题描述】:

所以我一直在尝试使用 HSV 在一定程度范围内循环切换颜色,但我似乎无法在颜色之间平滑过渡。理想情况下,我希望能够在特定的度数范围(80-140)内移动,并在 0.5 - 1 之间循环饱和度和值。老实说,我不知道从哪里开始,我很想知道如何。

int[] colors = HsvToRgb(h,s ,v );

我使用的方法:

public static int[] HsvToRgb(double h, double S, double V) {
    double H = h;
    while (H < 0) {
        H += 360;
    }
    while (H >= 360) {
        H -= 360;
    }
    double R = 0, G = 0, B = 0;
    if (V <= 0) {
        R = G = B = 0;
    } else if (S <= 0) {
        R = G = B = V;
    } else {
        double hf = H / 60.0;
        int i = (int) Math.floor(hf);
        double f = hf - i;
        double pv = V * (1 - S);
        double qv = V * (1 - S * f);
        double tv = V * (1 - S * (1 - f));
        switch (i) {
            case 0:
                R = V;
                G = tv;
                B = pv;
                break;
            case 1:
                R = qv;
                G = V;
                B = pv;
                break;
            case 2:
                R = pv;
                G = V;
                B = tv;
                break;
            case 3:
                R = pv;
                G = qv;
                B = V;
                break;
            case 4:
                R = tv;
                G = pv;
                B = V;
                break;
            case 5:
                R = V;
                G = pv;
                B = qv;
                break;
            case 6:
                R = V;
                G = tv;
                B = pv;
                break;
            case -1:
                R = V;
                G = pv;
                B = qv;
                break;
        }
    }
    int r = Clamp((int) (R * 255.0));
    int g = Clamp((int) (G * 255.0));
    int b = Clamp((int) (B * 255.0));
    return new int[]{r, g, b};
}

public static int Clamp(int i) {
    if (i < 0) {
        return 0;
    }
    if (i > 255) {
        return 255;
    }
    return i;
}

【问题讨论】:

    标签: java colors rgb hsv hsb


    【解决方案1】:

    查看HSL Color。它的 API 允许您使用以下方法轻松更改颜色:

    1. adjustHue - 指定颜色的程度
    2. adjustLuminance – 指定亮度的绝对百分比
    3. adjustSaturation – 指定饱和度的绝对百分比
    4. adjustShade - 调整阴影会给你一个更深的颜色。您可以通过指定调整百分比来控制颜色的暗度。
    5. adjustTone – 调整色调会让你的颜色变浅。您可以通过指定调整百分比来控制颜色的淡化程度。

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多