【问题标题】:Processing Draw Program处理绘图程序
【发布时间】:2015-09-29 04:14:25
【问题描述】:

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

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

【问题讨论】:

    标签: drawing processing


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2017-01-28
      相关资源
      最近更新 更多