<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
在我小的时候,画家的大画盒中包含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类,对用户特定平台提供的颜色进行访问。最后的这种参数设置使您能够查询一个组件应该使用什么颜色,这样,您在创建这种组件的新的版本时,它们看起来就象实际
<script type="text/javascript">
</script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript">
</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>