处理3-使用noFill()后填充形状

时间:2019-04-09 18:00:32

标签: java processing

我目前正在尝试创建一种绘图应用程序形式,并且我刚刚使用createShape()实现了折线功能。

问题是,绘制形状时,用户很可能不希望填充它,因此我使用了noFill()。但是,绘制后,调用endShape时,我想填充形状(假设满足正确的情况),不幸的是,仅使用PShape.setFill(colour)无法正常工作。

例如

Pshape s;
s = createShape();
s.beginShape();
s.noFill();

drawShape(s);

s.endShape();
if(fill.selected) s.setFill(colour);

有什么办法做到这一点,还是我不必使用noFill? 任何帮助表示赞赏,谢谢。

1 个答案:

答案 0 :(得分:2)

只要在beginShape() / endShape()通话中使用fill(),就应该可以使用它。

这是一个粗略的例子:

PShape s;

boolean useFill;

void setup(){

  size(300,300);
  s = createShape();
  s.beginShape();
  s.noFill();
  s.vertex(30,30);
  s.vertex(120,30);
  s.vertex(30,120);
  s.vertex(30,30);// close shape, repeat last vertex
  s.endShape();

}

void draw(){
  background(127 + (frameCount % 127));
  shape(s);
  text("press any key to toggle fill",10,15);
}

void keyPressed(){
  useFill = !useFill;

  if(useFill){
    s.beginShape();
    s.fill(color(192,0,0));
    s.endShape();
  }else{
    s.beginShape();
    s.noFill();
    s.endShape();
  }
}