提问者:小点点

加工-如何停止形状消失时,使另一个


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

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

我也希望这个工作与背景()内的绘制()函数,因为每当我删除背景()从程序或把它放在安装()我无法减少宽度和高度的形状拖动鼠标时,它会创建小轨迹的矩形内的形状发生时,鼠标也被拖动。

这是我的密码

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);
}

共1个答案

匿名用户

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

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();
}

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