加工绘制程序

Processing Draw Program

我正在制作一个基本的 paint/draw 处理程序,其中左键单击将绘制一个点,右键单击将绘制一个背景颜色的矩形到 "erase"。问题是,当我开始擦除时,它不会让我回去画画。我也想让点画得更快,这样它看起来更像一条线而不是一条虚线。谢谢! 这是代码:

void setup() {
  size(600, 600);
  background(#C4C4C4);
}

void draw() {
  frameRate(60);
  if (mouseButton == LEFT) {
    fill(#030303);
    point(mouseX, mouseY);
  }

  else if(mouseButton == RIGHT){
    fill(#C4C4C4);
    noStroke();
    rect(mouseX-15, mouseY-15, 30, 30);
  }
}

您的主要问题是当用户按下右键时您调用了 noStroke(),但是您从未在用户按下左键时将笔划设置回原位。 point() 函数使用描边颜色,而不是填充颜色,因此您必须重新设置它。这有效:

void setup() {
  size(400, 400);
  background(#C4C4C4);
}

void draw() {

  if (mouseButton == LEFT) {
    stroke(#030303);
    point(mouseX, mouseY);
  }

  else if(mouseButton == RIGHT){
    fill(#C4C4C4);
    noStroke();
    rect(mouseX-15, mouseY-15, 30, 30);
  }
}

至于画线而不是点,可以使用pmouseXpmouseY变量(保存鼠标先前的位置)画线。具体来说,改变这个:

point(mouseX, mouseY);

为此:

line(pmouseX, pmouseY, mouseX, mouseY);