我有一种颜色,我只在运行时知道。我想使用这种颜色创建两种新颜色,一种非常明亮,一种不明亮。
为了澄清一下,假设我的颜色是红色;我想创建“浅红色”颜色和“深红色”颜色的十六进制值。
我该怎么做呢?我的代码是使用 GWT 用 Java 编写的。
将颜色转换为 HSB/HSV(色相-饱和度-亮度/值)空间,并将亮度向上调整为较亮,向下调整为较暗。然后再次转换回来。在爪哇中:
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空间就是为这种操作而设计的。
要点是您只需改变亮度项即可获得您想要的变亮/变暗效果。您必须尝试变亮/变暗的程度。
上面的代码将高光的亮度改变为白色,阴影的亮度改变为黑色。 (我使用此代码在按钮上创建突出显示的边框效果。)
See: http://en.wikipedia.org/wiki/HSL_and_HSV http://en.wikipedia.org/wiki/HSL_and_HSV and http://www.acasystems.com/en/color-picker/faq-hsb-hsv-color.htm http://www.acasystems.com/en/color-picker/faq-hsb-hsv-color.htm
Edit:根据评论,java.awt.Color
类不能在 GWT 中使用。由于唯一的一部分Color
我们使用的类是 HSV 到 RGB 以及 RGB 到 HSV 转换,当您使用 GWT 时,您可以通过 google 来获取这些算法的实现:。例如:
- javascripter.net http://www.javascripter.net/faq/rgb2hsv.htm
- cs.rit.edu/~ncs http://www.cs.rit.edu/~ncs/color/t_convert.html
- rapidtables.com(RGB 到 HSV) http://www.rapidtables.com/convert/color/rgb-to-hsv.htm
- rapidtables.com(HSV 到 RGB) http://www.rapidtables.com/convert/color/hsv-to-rgb.htm
- StackOverflow:将 RGB 转换为 HSV 以及将 HSV 转换为 RGB 的算法? https://stackoverflow.com/q/3018313/41861
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)