如何在java swing应用程序中修改颜色强度

如何在java swing应用程序中修改颜色强度,java,swing,colors,brightness,Java,Swing,Colors,Brightness,我正在使用JavaSwing创建一个界面,用户在其中绘制几个点。我想做的是在画出这些点之后,自动改变颜色的强度,从真的亮到暗,直到点消失。有人知道关于如何改变颜色强度的教程吗?因为我找不到帮助我的东西 编辑:谢谢你的回答,他们帮助我更好地理解了如何使用色彩课。我修复了它,所以我上传了线程部分,以帮助其他人做类似的事情。。。我在黑色背景上工作,所以我把颜色调暗而不是调亮 public class MyThread extends Thread { private Canvas canva

我正在使用JavaSwing创建一个界面,用户在其中绘制几个点。我想做的是在画出这些点之后,自动改变颜色的强度,从真的亮到暗,直到点消失。有人知道关于如何改变颜色强度的教程吗?因为我找不到帮助我的东西

编辑:谢谢你的回答,他们帮助我更好地理解了如何使用色彩课。我修复了它,所以我上传了线程部分,以帮助其他人做类似的事情。。。我在黑色背景上工作,所以我把颜色调暗而不是调亮

public class MyThread extends Thread {

    private Canvas canvas;
    private int sleepingTime = 5000;
    private Color color;
    private int red, green, blue, alpha;

    public MyThread(Canvas canvas) {
        super();
        this.canvas = canvas;
        setDaemon(true);

    }

    public void run(){
        while (true){
            try {
                System.out.println("going to sleep...");
                Thread.sleep(sleepingTime);

            } catch (InterruptedException e) {
                System.out.println("sleep interrupted..");
                return;
            }
            System.out.println("woke up!");
                int size = canvas.points_list.size();
                int i =0;
                while (size > 0) {
                    color = canvas.points_list.get(i).getForeground();

                    red = (int) Math.round(Math.max(0, color.getRed() - 255 * 0.25f));
                    green = (int) Math.round(Math.max(0, color.getGreen() - 255 * 0.25f));
                    blue = (int) Math.round(Math.max(0, color.getBlue() - 255 * 0.25f));

                    alpha = color.getAlpha();

                    canvas.points_list.get(i).setForeground(new Color(red, green, blue, alpha));
                    size--; 
                    i++;
                }

                canvas.repaint();
        }
    }
}

您需要使用RGB表单,通过添加蓝色和绿色并保持红色值不变,使其成为从亮到暗的渐变,在for循环中连续执行此操作,然后在结束时将其设置为您的背景色,使其不可见。

查看HSB颜色模型。它允许您指定强度饱和度和亮度

示例红色背景变为黑色-或者,修改s参数以将颜色淡入白色:

final Frame frame = new Frame();

Timer timer = new Timer(500, new ActionListener() {

    float b = 1.0f;

    @Override
    public void actionPerformed(ActionEvent e) {
        int color = Color.HSBtoRGB(0, 1, b);
        frame.setBackground(new Color(color));

        b -= 0.05f;
    }
});
timer.start();

frame.setSize(200, 200);
frame.setVisible(true);

有几十种方法可以实现这一点,对于或使用Color.getHSBColor。要使颜色褪色,我会增加alpha分量。