1

我正在尝试将数组列表中的椭圆绘制到 PGraphics 层上。到目前为止,这有效。但是,我需要给 PGraphics 图层一个白色背景。添加背景的那一刻,我无法通过鼠标单击添加任何椭圆。我已经尝试在 PGraphics 图层上绘制没有背景的椭圆,并且再次在具有背景的第二个 PGraphics 图层上绘制。但这仍然会导致椭圆在一遍又一遍地绘制时变得像素化的问题。我怎样才能使椭圆从数组列表逐渐添加到唯一的 PGrpahics 层?

PGraphics pg;
ArrayList<Circle> circles;
void setup () {
  size(500, 500);
  circles = new ArrayList<Circle>();
  circles.add(new Circle());
  pg = createGraphics(width, height);
}

void draw() {
  background(255);
  image(pg, 0, 0);
  for (int i = circles.size()-1; i >= 0; i--) {
    Circle circle = circles.get(i);
    circle.display();
  }
}
void mousePressed() {
  circles.add(new Circle());
}

而这部分……我把后台功能注释掉了……</p>

  class Circle {
  int x = int(random(width));
  int y = int(random(height));
  int size;

  Circle() {
  }
  void display() {
    pg.beginDraw();
    //pg.background(255);
    pg.ellipse(x, y, 20, 20);
    pg.endDraw();
  }
}
4

2 回答 2

1

我想我找到了解决方案。我发现我的对象上有接受 PGraphics 作为参数的方法:

PGraphics pg;
ArrayList<Circle> circles;
void setup () {
  size(500, 500);
  circles = new ArrayList<Circle>();
  circles.add(new Circle());

  pg = createGraphics(width, height);

}

void draw() {

  pg.beginDraw();
  pg.background(255);

  for (int i = circles.size()-1; i >= 0; i--) {
   
    Circle circle = circles.get(i);
    circle.display(pg);
  }
  pg.endDraw();
    //image(pg, 0, 0);
 
}
void mousePressed() {
  circles.add(new Circle());
}

class Circle {
  int x = mouseX;
  int y = mouseY;
  int size;

  Circle() {
  }
  void display(PGraphics pg) {

    pg.fill(0);
    pg.ellipse(x, y, 20, 20);

  }
}
于 2022-02-04T14:18:39.600 回答
0

也许尝试将背景放在设置中,这样背景就不会覆盖所有的椭圆。希望它有效

于 2022-02-13T13:10:27.993 回答