java – 动态地创建不同亮度的颜色
|
我有一种颜色,我只在运行时知道.使用这种颜色我想创造两种新的颜色,一个非常明亮,一个没有明亮的版本的颜色. 所以要澄清,说我有颜色红色;我想为“浅红”颜色和“深红色”颜色创建十六进制值. 我该怎么做呢?我的代码是使用GWT编写的. 解决方法将颜色转换为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],0.5f * hsbVals[2] );
HSB空间专为这种操作而设计. 要点是您只需要改变亮度项来获得所需的亮度/变暗效果.你必须尝试减轻/变暗多少. 上面的代码将亮度转移到白色的中间,用于突出显示,半色变换为黑色. (我使用这个代码在按钮上创建一个突出显示的边框效果.) 参见:http://en.wikipedia.org/wiki/HSL_and_HSV和http://www.acasystems.com/en/color-picker/faq-hsb-hsv-color.htm 编辑:根据注释,java.awt.Color类不能在GWT中使用.由于我们使用的Color类的唯一部分是HSV到RGB和RGB到HSV转换,因为你使用GWT,而是google可以实现这些算法:Google HSV RGB conversion algorithm.例如: > javascripter.net (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java.text.SimpleDateFormat中的奇怪的行为,期望yyyyMMdd给
- java – 为什么使用两种不同的算法进行排序?
- Java输入三个整数并把他们由小到大输出(x,y,z)
- Java中的用户登录-JAAS / JNDI / GSSAPI
- JSON的String字符串与Java的List列表对象的相互转换
- java – 依赖(对于sun.security.util)的SBT构建
- Spring MVC Mybatis多数据源的使用实例解析
- 使用准备好的语句和变量绑定在Java中使用JDBC驱动程序
- java 可重启线程及线程池类的设计(详解)
- .net的AggregateException的java等价物是什么?
