2010-05-06 3 views
4

Я пытаюсь понять, как я могу преобразовать число в диапазоне от 1 до 50 в оттенках серого цвета, который может быть использован здесь:Преобразование числа в оттенках серого цвета в Java

g.setColor(MyGreyScaleColour); 

1 будет легким (белый) и 50 будут самыми темными (черные).

например.

Color intToCol(int colNum) 
{ 
code here 
} 

Любые предложения?

ответ

10

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); 
} 
+0

+1 для обеспечения хорошего объяснения, а не только кода. – Jonik

8

Что-то вроде:

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

Зачем делиться на 49f вместо 50f? –

+1

«как я могу преобразовать число от 1 до 50», я предполагаю, что включено, так: если 'n = 50', то' gray = (50-50)/49f = 0.0'; если 'n = 1', то' gray = (50-1)/49f = 1.0'. Вы должны разделить на 49, а не на 50. –