编程技巧:如何创建颜色
在我小的时候,画家的大画盒中包含64种颜色。今天,大画盒包含96种颜色,画家有常用的120种颜色,包括一些调和出来的变化颜色。在过去的100年中,已经有超过已经有超过400种颜色。
为了获得不同的颜色,颜料被调和在一起。例如,红色和黄色调和成桔红色。在计算机上,完全相反。你不是调和颜料,而是混合变化的光线。为了得到黄色,你实际上要混合红色和绿色。
三种不同光线强度的混合可以表现所有的颜色。这三种颜色是红色,绿色和蓝色,常被所写成RGB。对于三种颜色的每一种,有256种可能的值或16,777,216 (256*256*256)种不同的亮度。而在Java 2平台的标准库中是用java.awt.Color类来表示那些颜色。
对于常用的颜色,Color类包含两组13个常量。一组是13种用小写字母表示的常用颜色,如red, green, blue,而另一组全部使用大写,例如,RED, GREEN, BLUE。起初,只有一组使用小写字母的常量,J2SE 1.4版中介绍了第二组全部大写字母的。在原有的常量组不受影响的同时,新的常量组遵循其它公共常量的名称转换规则。
载通过混合红色、绿色、蓝色光线所得到的1千6百万种颜色以外,还有第四种选项,被称为opacity。这第四种选项表示一个特定颜色设置的透明度或深度,同时也被称为alpha channel。
一种颜色越不透明,它的清晰度越低。对于红色、绿色、蓝色,opacity也提供256种数值,为您带来总共4,294,967,296种不同的变化。注意,尽管Color类支持超过40一种不同的颜色设置,并不是所有的图形卡都支持。即使很多新的计算机都支持,您应该尽量把使用的颜色种类限制在一个合理的子集内。
鉴于四种可能的颜色设置,alpha,红色,绿色,蓝色,都能用一个整形变量表示。每种设置提供256种不同的变化,这正是8位字符的数据量。这样,4种设置乘8位得到32位,这正好是int的容量。从左到右,这256种设置以8位形式首先存放alpha,然后是红色,绿色,蓝色。每一个被存放为无符号数值,从0到255。
您可以用很多种方式创建颜色。像前面提到的,你可以使用一个预定义的常量,如RED, GREEN, BLUE。也有brighter()和darker()方法用于调整已有的颜色。更具代表性的是使用一组正型数值代表red, green, 和blue的值,并配以选项设置修改透明度。没有最后一个设置,颜色使不透明的(没有透明度)。
例如,有几种不同的方法得到红色。前两种是使用RED和red常量。这两种方式在屏幕上画点时不是用绿色和蓝色。
您同样可以通过调用Color的构造函数来得到红色,即传递数值255给红色,0给绿色和蓝色。
Color red = new Color(255,0,0)
作为最后一种获得红色的方式,您可以结合4种设置:red, green, blue和transparency,在调用构造函数:
int value = ((255 & 0xFF) << 16);
Color red = new Color(value);
这将红色(255)的设置放入int的第二字节(从左侧)。当然,您可以分别指定每一个设置来初始化颜色:
int value =
((alpha & 0xFF) << 24) |
((red & 0xFF) << 16) |
((green & 0xFF) << 8) |
((blue & 0xFF) << 0) ;
Color构造函数将会把这个设置作为一个数值,new Color(value),替代了单独的alpha, red, green, 和blue的设置。
但您有了您的Color对象,您可以使用它载其它事务中填充屏幕或设置组件的foreground/background的颜色。
操作颜色的第二种机制是通过HSB参数设置的,它代表Hue,Saturation和Brightness。
也有相应的java.awt.SystemColor类,对用户特定平台提供的颜色进行访问。最后的这种参数设置使您能够查询一个组件应该使用什么颜色,这样,您在创建这种组件的新的版本时,它们看起来就象实际的系统组件一样。
- · 使用数据服务进行数据集成
- · AquaLogic Data Services Platform有什么新功能
- · Liquid Data篇:基于XQuery…
- · Liquid Data编程指导
- · 关于Custom Function的定制
- · 关于Liquid Data 1.0中的数…
- · 从Liquid Data例子中访问LD…
- · 企业应用集成专题-Liquid …
- · 用Liquid Data 加速UUP的部…
- · WebLogic Real Time 1.0“Trader”应用程序性能分析
- · JROCKIT MISSION CONTROL简介
- · WebLogic Real Time简介
- · JRockit JVM对AOP的支持,第2部分
- · JRockit JVM对AOP的支持,第1部分
- · 消除内存泄漏
- · JRockit JVM 中的内存泄漏检测
- · BEA WebLogic JRockit的使用…
- · 无需调优的内存优化
- · 64位环境中的Java
- · BEA增强力度支持Eclipse推出…
- · JRockit5.0 的新特性和工具
- · 让Tuxedo和PowerBuilder协同工作
- · 配置WebLogic Tuxedo Connector
- · 应用程序环境、迁移和事务
- · Tuxedo与DB2数据库的连接
- · Tuxedo 中关于时间的参数的…
- · xmlstockapp源代码解析
- · Windows NT平台安装Tuxedo …
- · HP-UX平台安装Tuxedo 6.5方…
- · Tuxedo数据buffer基本类型介…
- · 关于TUXEDO 负载均衡和MSSQ…
- · 将Tuxedo Service 发布成 W…
- · 揭开SAML的神秘面纱
- · WebLogic Enterprise Security
- · 使用JProcessUnit测试业务流程简介
- · 对企业级Java应用程序及其部署进行建模
- · 使用JMS客户端利用空闲的计算机资源
- · 客户端调用WLI81 JPD的方法总结 第二部分
