我试图从数组列表中将椭圆绘制到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());
}这部分是…我在…之外注释了后台函数
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();
}
}发布于 2022-02-04 14:18:39
我想我找到了解决办法。我发现我的对象上有一些方法接受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-13 13:10:27
也许试着把背景放在设置中,这样背景就不会覆盖所有的椭圆。希望能起作用
https://stackoverflow.com/questions/70986986
复制相似问题