java - 动态创建具有不同亮度的颜色

标签 java gwt colors

我有一种颜色,我只在运行时知道。我想使用这种颜色创建两种新颜色,一种非常明亮,一种不明亮。

所以澄清一下,假设我有红色;我想为“浅红色”颜色和“深红色”颜色创建十六进制值。

我该怎么做呢?我的代码是使用 GWT 用 Ja​​va 编写的。

最佳答案

将颜色转换为 HSB/HSV(色相-饱和度-亮度/值)空间并调整亮度,向上调亮,调低调暗。然后再转换回来。在 Java 中:

    import java.awt.Color;

    float hsbVals[] = Color.RGBtoHSB( originalColour.getRed(),
                                       originalColour.getGreen(),
                                       originalColour.getBlue(), null );
    Color highlight = Color.getHSBColor( hsbVals[0], hsbVals[1], 0.5f * ( 1f + hsbVals[2] ));
    Color shadow = Color.getHSBColor( hsbVals[0], hsbVals[1], 0.5f * hsbVals[2] );

HSB空间就是为这种操作而设计的。

要点是您只需改变亮度项即可获得您想要的变亮/变暗效果。您必须试验变亮/变暗的程度。

上面的代码将 Brightness 移动到白色的一半用于高光,一半用于黑色用于阴影。 (我使用这段代码在按钮上创建了突出显示的边框效果。)

参见:http://en.wikipedia.org/wiki/HSL_and_HSVhttp://www.acasystems.com/en/color-picker/faq-hsb-hsv-color.htm

编辑:根据评论,java.awt.Color 类不能在 GWT 中使用。由于我们使用的 Color 类的唯一部分是 HSV 到 RGB 和 RGB 到 HSV 的转换,因此当您使用 GWT 时,您可以改为谷歌搜索这些算法的实现: Google HSV RGB conversion algorithm 。例如:

关于java - 动态创建具有不同亮度的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2355157/

相关文章:

Java正则表达式前面的字符

java - Spring SingletonBeanFactoryLocator bean 销毁

java - 使用 GNU 宽松通用公共(public)许可证下的库时对我的项目施加的限制

java - 使用 GWT/Java 获取日期?

Python-是否有函数或公式来查找 rgb 代码的互补色?

android - TextView在同一行,选择一个取消另一个

java - 如何防止数字四舍五入为0,Android Studio

gwt - 使用 GWT-Maven 时如何为 GWT 编译器提供更多内存?

maven - IntelliJ Idea中如何编译打包maven gwt项目

iphone 按钮文本颜色在单击时自行改变?