我一直在编写一个程序,用不同的颜色重绘大量(几百个)相同的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);
}
任何帮助非常感谢
答案 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()