Verständnis Android-Leinwand.saveLayer(...)

Ich hoffe, die saveLayer Methoden, die es mir ermöglichen, zu tun, ziehen auf verschiedenen "Ebenen" und dann, sobald die Zeichnung fertig ist, verschmelzen die Ebenen im canvas-Bereich, in welcher Reihenfolge ich wählen.

Die offensichtliche Frage "warum spielst du nicht einfach die Reihenfolge der Zeichenoperationen statt?" Die Antwort ist ich kann nicht:

Ich habe einen Weg, den ich brauche, um zu zeichnen auf eine Leinwand. Im hintergrund/niedrigsten z-index ich will zeichnen Sie den Pfad geschlossen und mit ein paar zusätzlichen Punkte mit einer Füllung Stil. Dann will ich so zeichnen Sie einen Umriss nur die Punkte, die ursprünglich in den Weg.

Da kann ich nicht rückgängig machen, das hinzufügen von Punkten, um den Weg, meine einzigen Optionen sind zu Klonen, den Pfad, oder zu zeichnen, um eine zweite Schicht, die später gelegt werden alles andere.

saveLayer() scheint zu bieten, die Funktionalität, aber es tut so Verhalten, wie ich es erwartet hatte. Der grundlegende Ablauf meiner Operationen ist wie folgt:

int overlay = canvas.saveLayer(...);
//drawing operations for my uppermost layer
...

int background = canvas.saveLayer(...);
//drawing operations for my background layer
...

//merge the offscreen background bitmap with the canvas:
canvas.restoreToCount(background);

//merge the offscreen overlay bitmap with the canvas:
canvas.restoreToCount(overlay);

Wenn der code ausgeführt wird, wird die Bestellung von hintergrund-und overlay-haben sich nicht verändert; was wird zuerst gezeichnet ist unten und was wird zuletzt gezeichnet ist an der Spitze. Noch seltsamer für mich ist, dass ich komplett kommentieren Sie die beiden Anrufe zu restoreToCount() und es ändert sich nichts. Laut javadoc, nichts gezogen werden sollte, auf der Leinwand, bis ein Gleichgewicht wiederherstellen() wird aufgerufen.

Offensichtlich bin ich völlig verkennen die Funktion dieser Methode. Kann jemand mir helfen zu verstehen, saveLayer der Verwendung, oder vielleicht empfehlen einen alternativen Weg, um Schicht meiner Zeichnung Operationen?

Thx!!!
Nick

InformationsquelleAutor Nick | 2011-02-25
Schreibe einen Kommentar