2016-06-24 9 views
0

Ich habe viele Zeichnungsaufrufe in meinem Code (beginShape(), vertex(), line(), Füllungen, Striche und mehr). Im Moment gelten sie für den globalen Zeichnungskontext. Gibt es eine Möglichkeit, den Zeichnungskontext zu wechseln, ohne den Code durchlaufen zu müssen und alle Zeichenaufrufe zu ändern?Möglichkeit, alle nachfolgenden Zeichnungsaufrufe auf einen bestimmten Zeichenkontext in Verarbeitung anzuwenden

Zum Beispiel:

line(0, 0, 0, 40); 
moreDrawingCode(); 

verwandelt sich in:

useContext(pg); // pg is a PGraphics object for instance 
line(0, 0, 0, 40); 
moreDrawingCode(); 

Antwort

-1

Sie nur statische Kontextvariable erstellen können, und Sie werden so etwas bekommen:

class MyClass { 
    private static Context context; 

    public static void main(String[] args) { 

     Context contextA = new Context(); 
     Context contextB = new Context(); 

     useContext(contextA); 
     line(0, 0, 5, 5); 

     useContext(contextB); 
     line(0, 0, 5, 5); 

    } 

    public static void useContext(Context newContext) { 
     context = newContext; 
    } 

    public static void line(int x, int y, int x2, int y2) { 
     drawInContext(context, x, y, x2, y2); 
    } 
} 
+0

Bitte beachten Sie, dass dies eine [tag: verarbeitung] Frage ist. Während Processing eine Syntax mit Java teilt, [Processing! = Java] (http://meta.stackoverflow.com/questions/321127/processing-java), sind Java-Antworten nicht immer die beste Lösung für die Verarbeitung von Fragen. –

+0

@KevinWorkman, Warum hat der Autor diese Frage mit dem Tag 'Java' markiert? – Ivan

+0

Eine Diskussion über diese Frage finden Sie in [this thread] (http://meta.stackoverflow.com/questions/321127/processing-java). –

0

Lasst uns sagen Sie haben diesen Code:

Wenn Sie diesen Code in der Lage sein zu ändern, um eine andere PGraphics zu zeichnen, Sie gehen zu müssen, um Ihren Code ändern, um eine PGraphics als Parameter zu nehmen:

void drawStuff(PGraphics graphics){ 
    graphics.ellipse(50, 50, 25, 25); 
} 

Wenn Sie möchten, zeichnen auf dem Bildschirm, verwenden Sie einfach die vordefinierte g Variable:

drawStuff(g); 

Oder Sie können in einem PGraphics übergeben, die Sie erstellen. Vergessen Sie nicht, beginDraw() und endDraw() zu nennen:

pg.beginDraw(); 
    drawStuff(pg); 
    pg.endDraw(); 

setzen sie alle zusammen, könnte es etwa so aussehen:

PGraphics pg; 

void setup() { 
    size(200, 100); 
    pg = createGraphics(100, 100); 
} 

void drawStuff(PGraphics graphics){ 
    graphics.ellipse(50, 50, 25, 25); 
} 

void draw() { 
    drawStuff(g); 

    pg.beginDraw(); 
    drawStuff(pg); 
    pg.endDraw(); 

    image(pg, 100, 0); 
} 

Sie könnten auch die PGraphics speichern, um zu zeichnen in einer Skizze-Ebene Variable, anstatt sie als Parameter zu übergeben, aber das fühlt sich unordentlich an.