【问题标题】:set a random color in draw method在draw方法中设置随机颜色
【发布时间】:2014-04-25 07:53:15
【问题描述】:

好的,这是一个用随机颜色绘制的形状,但是我希望该形状在重新绘制时保持该颜色。现在使用这种绘制方法,它只是在每个repaint() 绘制一个新的随机颜色,所以它看起来像一个彩虹形状。我怎样才能让它抓住一个随机的颜色,然后坚持那个特定的形状?

public void draw(Graphics g) {
    g.setColor(new Color(randomNum.nextInt(256), randomNum.nextInt(256), randomNum.nextInt(256)));
    g.fillOval((int)getX(),(int)getY(), getRadius(), getRadius());

}

【问题讨论】:

    标签: java random colors


    【解决方案1】:

    通过保存您正在绘制的颜色。 所以你只会随机生成一次,然后每次都用那个颜色重绘。

    要么像Color c = new Color(randomNum.nextInt(256), randomNum.nextInt(256), randomNum.nextInt(256));那样在draw之前生成它,要么只生成变量并测试它是否已经在你的draw方法中初始化。如果没有(第一次运行代码),则生成随机颜色,如果已初始化,则跳过生成颜色并直接转到 g.fillOval

    【讨论】:

    • 好的,感谢您的帮助,我在绘制之前生成了变量并且它起作用了。
    • 很高兴为您提供帮助 :) 现在您显然不是新来的,所以我不想为此烦恼,但是您介意接受您所说的答案吗它有帮助。
    【解决方案2】:

    您保留一个形状列表。每个形状都有他的颜色和半径。

    重绘时,您绘制列表中的每个形状。

    static class OvalShape {Color color; int radius;}
    List<OvalShape> shapeList = new ArrayList<>();
    
    public void draw(Graphics g) {
        for(Shape s : shapeList) {
            g.setColor(s.color);
            g.fillOval((int)getX(),(int)getY(), s.radius, s.radius);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2017-06-08
      • 2014-11-13
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多