在Java中将一个数字转换为灰度颜色

4

我正在尝试想出如何将1到50之间的数字转换为灰度颜色,以便在这里使用:

g.setColor(MyGreyScaleColour);

1代表最浅的颜色(白色),50代表最深的颜色(黑色)。

例如:

Color intToCol(int colNum)  
{  
code here  
}  

有什么建议吗?
2个回答

11

Java 使用的是 RGB 颜色,其中每个组件(红色、绿色、蓝色)的取值范围为 0-255。当所有组成部分具有相同的值时,你得到的是一种白黑灰色。接近 255 的组合更接近白色,接近 0 的组合则全为黑色。下面的函数将返回一种灰色,其白色比例随输入进行调整。

Color intToCol(int colNum)
{
  int rgbNum = 255 - (int) ((colNum/50.0)*255.0);
  return new Color (rgbNum,rgbNum,rgbNum);
}

8

类似于:

float grey = (50 - colNum) / 49f;
return new Color(grey, grey, grey);

2
为什么要除以49f而不是50f? - Mark Elliot
1
如何将一个介于1到50之间的数字进行转换,我假设包括1和50:如果n=50,则grey=(50-50)/49f=0.0;如果n=1,则grey=(50-1)/49f=1.0。你必须除以49而不是50。 - Laurent Grégoire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接