Processing 加工-如何在制作另一个形状时防止形状消失

Processing 加工-如何在制作另一个形状时防止形状消失,processing,Processing,我目前拥有的代码允许我使用mousePressed()和mouseDragged()创建一个矩形。但是,当我开始创建另一个矩形时,我之前创建的矩形消失了 我只是想让我的程序创建一个矩形,而不是让它在创建另一个矩形时消失 我还想让它与draw()函数中的background()一起工作,因为每当我从程序中删除background()或将其放入setup()中时拖动鼠标时,我无法减小形状的宽度和高度,它会在形状内部创建小的矩形轨迹,这在拖动鼠标时会发生 这是我的密码 int a, b, c, d =

我目前拥有的代码允许我使用
mousePressed()
mouseDragged()
创建一个矩形。但是,当我开始创建另一个矩形时,我之前创建的矩形消失了

我只是想让我的程序创建一个矩形,而不是让它在创建另一个矩形时消失

我还想让它与
draw()
函数中的
background()
一起工作,因为每当我从程序中删除
background()
或将其放入
setup()中时
拖动鼠标时,我无法减小形状的宽度和高度,它会在形状内部创建小的矩形轨迹,这在拖动鼠标时会发生

这是我的密码

int a, b, c, d = 0;

void setup() {
  size(1000, 800);

}


void draw() {
  background(204);
  stroke(0);
  strokeWeight(2);
  noFill();
  rect(a, b, c, d);
}


void mousePressed() {
  a=mouseX;
  b=mouseY;
}


void mouseDragged() {
  c=mouseX-a;
  d=mouseY-b;
  rect(a, b, c, d);
}

听起来你可以使用另一个图层来绘制(不清除它)。 幸运的是,这很容易使用:

如果你决定玩一个绘图工具,你可能想看看

int a, b, c, d = 0;

PGraphics layer;

void setup() {
  size(1000, 800);
  stroke(0);
  strokeWeight(2);
  noFill();
  // make new drawing layer
  layer = createGraphics(width, height);
  // use drawing functions within beginDraw() / endDraw()
  layer.beginDraw();
  layer.stroke(0);
  layer.background(204);
  layer.strokeWeight(2);
  layer.noFill();
  layer.endDraw();
}


void draw() {
  background(204);
  // render background layer
  image(layer,0,0);
  // draw foreground;
  rect(a, b, c, d);
}


void mousePressed() {
  a=mouseX;
  b=mouseY;
}


void mouseDragged() {
  c=mouseX-a;
  d=mouseY-b;
  // draw preview
  rect(a, b, c, d);
}

void mouseReleased(){
  // render final shape into background layer
  layer.beginDraw();
  layer.rect(a, b, c, d);
  layer.endDraw();
}