2

私は、同じ PShape をさまざまな色でたくさん (数百) 再描画するプログラムを書いています。ただし、実際に PShape を再作成せずに PShape を別の色で再描画する方法を見つけられませんでした。つまり、すべての頂点をやり直し、塗りつぶしを変更して新しい PShape 変数に割り当てるだけです。私は tint()、fill()、setFill() のようなものを試しましたが、それらはすべて begin/end シェイプで呼び出す必要があるようです。

形状を完全に再定義して新しい変数に割り当てることなく、異なる色で 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);
}

どんな助けでも大歓迎です

4

1 に答える 1

8

はい、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()です。

于 2013-09-19T21:39:35.733 に答える