使 RGB java.awt.Color 更亮

问题描述 投票:0回答:1

我可以将

java.awt.Color
转换为 HSL 颜色,并使其变浅或变深 - 也就是说,将 L 值增加或减少十个点(显然,在 0 到 100 的范围内)?

如果是这样,怎么办?

代码越少越好。如果 Apache 或 Guava 可以提供帮助,请随意使用它们

我可以使用 HSB 代替(参见下面的代码),但它不会产生相同的结果(例如,将 B 增加 10 与将 L 增加 10 不同)

package demos.color;

import java.awt.Color;

public class ColorUtils {
        public static Color brighterBy(Color color, float factor) {
        return adjustBrightness(color, factor);
    }

    public static Color darkerBy(Color color, float factor) {
        return adjustBrightness(color, -factor);
    }

    private static Color adjustBrightness(Color color, float factor) {
        float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null);
        hsb[2] = Math.min(Math.max(hsb[2] + factor, 0.0f), 1.0f);
        return new Color(Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]));
    }

    public static void main(String[] args) {
        Color originalColor = new Color(184, 207, 229);
        Color lighterColor = brighterBy(originalColor, 0.2f);
        Color darkerColor = darkerBy(originalColor, 0.2f);

        System.out.println("Original Color: " + originalColor);
        System.out.println("Lighter Color: " + lighterColor);
        System.out.println("Darker Color: " + darkerColor);
    }
}
java swing
1个回答
0
投票

Rob Camick 就 Java 的 RGB 颜色使用和到 HSL 的转换写了一篇出色的文章。它似乎专门用于调整颜色的明/暗。

这是文章:HSL 颜色

他还提供了一个HSLColor类,你可以在Github上查看: HSLColor.java

在他出色的文章和提供的类示例之间,我认为这应该可以满足您所要求的一切。

© www.soinside.com 2019 - 2024. All rights reserved.