RGB-INT Цвет строится так из битов (последние три байта):
RRRRRRRR GGGGGGGG BBBBBBBB
Как вы можете видеть:
синий байт при размещении 0 - 7 бит целого числа.
зеленый байт находится в положении 8 - 15 бит целого числа.
красный байт находится в положении 16-23 бита целого числа.
если вы добавляете 1, то в основном только добавить 1 к синему, добавить 1 к зеленому вам нужно добавить 256 и добавить 1 к красному вам нужно добавить 65536.
Это просто как бинарная works - номер int один, но используется как три байта, каждый байт для каждой части цвета RGB.
Ваш код в конечном итоге пройдет сквозь все оттенки всех цветов, но я думаю, что вы хотите иметь эффект от мигающих цветов. В этом случае используйте пространство HSB .
Таким образом, вам не нужны все оттенки всех цветов, но только некоторые типичные цвета для определенного уровня яркости и насыщенности. В этом случае создайте свой цвет, используя приведенный ниже метод, входы находятся в диапазоне от 0.0 до 1.0 float, часть, отвечающая за цвет, - это параметр hue (h).
Color.getHSBColor(h, s, b)
Так это может быть:
package Snake;
import javax.swing.*;
import java.awt.*;
/**
* Created by Alex **** on 02/10/2016.
*/
public class RenderPanel extends JPanel{
public int curColor = 0;
// @Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.getHSBColor((curColor%256)/256f, 0.5f, 0.5f));
g.fillRect(0, 0, 800, 700);
curColor++;
}
}
Вы не получите спектр путем добавления 1 к цвету повторно. Вы должны перебирать значения Hue в пространстве HSL и преобразовывать их в RGB. –