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

use*_*072 1 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);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助非常感谢

Geo*_*nza 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

对于这样一个简单的形状你当然可以使用rect(),但我认为这是一个更复杂的东西.其他值得探索的事情是beginShape()maybeGraphics ()