处理绘图程序

时间:2015-09-28 19:57:22

标签: drawing processing

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

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

1 个答案:

答案 0 :(得分:0)

您的主要问题是,当用户按下右键时,您会调用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);