有没有办法在不进入开始/结束的情况下改变PShape的颜色?

时间:2013-09-19 20:14:03

标签: processing

我一直在编写一个程序,用不同的颜色重绘大量(几百个)相同的PShape。但是,我没有找到一种方法来重新绘制不同颜色的PShape而不实际重新创建PShape,即通过开始/结束形状重做所有顶点并简单地更改填充然后将其分配给新的PShape变量。我尝试过像tint(),fill(),setFill()这样的东西,它们似乎都需要在开始/结束形状中调用。

有没有办法重新绘制不同颜色的PShape而无需完全重新定义形状并将其指定给新变量?

非常感谢任何帮助。

(这是我尝试的不同事物的一种整理)

   PShape p;

    void setup()
{
  size(600,600,P2D);
  p = createShape();
  p.beginShape();
  p.vertex(0, 0);
  p.vertex(20, 0);
  p.vertex(20, 20);
  p.vertex(0, 20);
  p.endShape(CLOSE);
}

void draw()
{
  p.tint(200,100,30);
  p.fill(200,100,30);
  p.setFill(0,0);
  shape(p,100,100);
}

任何帮助非常感谢

1 个答案:

答案 0 :(得分:6)

是的,你可以使用PShape的disableStyle()来禁用它的渲染风格并使用Processing(你的草图):

PShape p;

void setup()
{
  size(600, 600, P2D);
  p = createShape();
  p.beginShape();
  p.vertex(0, 0);
  p.vertex(20, 0);
  p.vertex(20, 20);
  p.vertex(0, 20);
  p.endShape(CLOSE);
  //disable the PShape's default styles and use Processing's 
  p.disableStyle();
}

void draw()
{
  background(255);
  for(int i = 0 ; i < 30 ; i++){
      fill(i/30.0*255, 100, 30);
      shape(p, i * 20,300);
  }
}

对于这样一个简单的形状你当然可以使用rect(),但我认为这是一个更复杂的东西。其他需要探索的内容包括beginShape()createGraphics()