我想做一个颜色值的地图.例如,0到25之间的值将表示从浅色到深色的蓝色变化.我从来没有这样做过,所以我想对基础知识提出一些建议和解释.感谢帮助.
第一步是选择固定点的颜色,例如白色为0,蓝色为25,如您所示.然后你可以添加绿色为50,红色为75,依此类推.
每个固定点映射到RGB值.如果我们使用0到1之间的浮点数,则数学运算更容易:
Value Red Green Blue
0 0.33 0.33 0.34
25 0.00 0.00 1.00
50 0.00 1.00 0.00
Run Code Online (Sandbox Code Playgroud)
如果你像这样保持R + G + B不变,颜色的强度将是恒定的(参见:http://en.wikipedia.org/wiki/HSL_and_HSV)
现在,您可以确定两种固定颜色之间的颜色.您可以获得范围低端和高端的RGB值.以值15为例,让我们一起工作.15介于0和25之间,因此:
rLow = 0.33f; gLow = 0.33f; bLow = 0.34f;
rHigh = 0.0f; gHigh = 0.0f; bHigh = 0.0f;
float prop = ( x - vLow) / ( vHigh - vLow );
[e.g. = ( 15 - 0 ) / ( 25 - 0 ) = 0.6 ]
Run Code Online (Sandbox Code Playgroud)
然后为您执行的每种颜色:
float rVal = rLow + prop * ( rHigh - rLow );
[e.g. = 0.33 + 0.6 * ( 0.00 - 0.33 ) = 0.132 ]
Run Code Online (Sandbox Code Playgroud)
同样,你解释为绿色和蓝色:
float gVal = gLow + prop * ( gHigh - gLow );
float bVal = bLow + prop * ( bHigh - bLow );
Run Code Online (Sandbox Code Playgroud)
蓝色示例如下:
[e.g. = 0.34 + 0.6 * ( 1.00 - 0.34 ) = 0.736 ]
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样创建Java Color对象:
颜色col =新颜色(rVal,gVal,bVal);
并按照您的意愿使用它.:-)
| 归档时间: |
|
| 查看次数: |
5472 次 |
| 最近记录: |