首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带背景()的PGraphics;正在处理中

带背景()的PGraphics;正在处理中
EN

Stack Overflow用户
提问于 2022-02-04 13:14:15
回答 2查看 101关注 0票数 1

我试图从数组列表中将椭圆绘制到PGraphics层。到目前为止这是可行的。然而,我需要给PGraphics层一个白色的背景。在我添加背景的那一刻,我不能再通过鼠标点击添加任何椭圆。我已经尝试过在PGraphics层上绘制没有背景的椭圆,在第二个有背景的PGraphics层上也是这样。但这仍然会导致椭圆一次又一次地被画成像素的问题。如何使椭圆从数组列表中逐渐添加到唯一的PGrpahics层?

代码语言:javascript
复制
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());
}

这部分是…我在…之外注释了后台函数

代码语言:javascript
复制
  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();
  }
}
EN

回答 2

Stack Overflow用户

发布于 2022-02-04 14:18:39

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

代码语言:javascript
复制
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);

  }
}
票数 1
EN

Stack Overflow用户

发布于 2022-02-13 13:10:27

也许试着把背景放在设置中,这样背景就不会覆盖所有的椭圆。希望能起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70986986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档