簡體   English   中英

Java:使用HSV在特定顏色之間循環

[英]Java: Cycling through a particular color with HSV

因此,我一直在嘗試使用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;
}

查看HSL顏色 其API使您可以使用以下方法輕松更改顏色:

  1. adjustHue –指定顏色的程度
  2. adjustLuminance –指定亮度的絕對百分比
  3. adjustSaturation –指定飽和度的絕對百分比
  4. adjustShade –調整陰影會使您的顏色更深。 您可以通過指定調整百分比來控制顏色應變暗多少。
  5. adjustTone –調整色調會使您的顏色更淺。 您可以通過指定調整百分比來控制顏色應變淺的程度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM