【问题标题】:How to make gradient color white - brown - green using Java Color如何使用 Java Color 使渐变颜色为白色 - 棕色 - 绿色
【发布时间】:2016-03-31 10:27:11
【问题描述】:

我正在尝试在 :

之间制作渐变颜色
White (light to dark)
Brown (dark to light
Green (dark to ligh)

但我不知道如何实现。

我的尝试很糟糕,所以我请你帮忙。

我的尝试:

    for (int i = 255; i > 0; i--) {
        if (i > 230) {
            g2.setColor(new Color(0 + i, 0 + i, 0 + i));
        } else if (i <= 230 && i > 180) {
            g2.setColor(new Color(139 - (255 - i), 89 - (255 - i), 19));
        } else if (i <= 180 && i > 79) {
            g2.setColor(new Color(0, 60 + (180 - i), 0));
        } else {
            g2.setColor(Color.blue);
        }
        g2.drawLine(0, 255 - i, 500, 255 - i);
    }

看:

感谢您的帮助!

【问题讨论】:

  • 您所说的“白色(从浅到深)”是什么意思?一种白色怎么可能比另一种更暗?
  • @SashaSalauyou 我的意思是它从浅到深(灰色)..

标签: java colors gradient color-scheme


【解决方案1】:

我觉得应该是一种:

for (int i = 255; i > 0; i--) {
    float h;
    float s;
    float v;
    if (i > 230) {
        h = 0;      // gray
        s = 0;
        v = 1f * i / 255;
    } else if (i <= 230 && i > 180) {
        h = 0.1;   // brown
        s = 0.8;
        v = 1f * (230 - i) / (230 - 180);
    } else if (i <= 180 && i > 79) {
        h = 0.33;  // green
        s = 1f;
        v = 1f * (180 - i) / (180 - 79);
    } else {
        h = 0.62;  // blue
        s = 1f;
        v = 1f;
    }
    g2.setColor(new Color(Color.HSBtoRGB(h, s, v)));
    g2.drawLine(0, 255 - i, 500, 255 - i);
}

这个想法是在 HSV 颜色空间而不是 RGB 中进行操作,其中 H(色调)和 S(饱和度)分量决定颜色中心的位置,而 V 决定“值”——颜色与黑点的距离。因此,您固定 H 和 S 分量并改变 V 以使颜色更亮或更暗。

见:https://docs.oracle.com/javase/8/docs/api/java/awt/Color.html#HSBtoRGB-float-float-float-

如果您为每种颜色找到更合适的 hs 常量,请随时评论/编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多