c'è un modo per organizzare drawen drawable su tela, prima di ridisegnarlo? Intendo impostare quale drawable sarà disegnato nella parte anteriore, e quale drawable sarà disegnato nella parte posteriore.
risposte:
4 per risposta № 1Sono disegnati nell'ordine in cui li disegna, prova a disegnare quello che si trova nella parte posteriore prima, quello anteriore l'ultimo.
0 per risposta № 2
È possibile disegnare su una tela temporanea per disegnare successivamente nella tela principale.
Picture iconFrame = new Picture();
Canvas tempCanvas = iconFrame.beginRecording(width, height);
// width and height refer to the intended destination canvas size
...
// Any configuration before performing the draw should be done here
tempCanvas.drawPath(...);
tempCanvas.drawBitmap(...);
// Any required draw commands for this image should be done to tempCanvas
iconFrame.endRecording();
...
// Any other configuration or draw commands can be done here
iconFrame.draw(canvas);
// Assigns the content of tempCanvas to the top of the main Canvas
Nel mio caso, la manipolazione di PorterDuff della mia immagine all'interno di un percorso personalizzato ha funzionato solo se è stata eseguita per prima, poiché in seguito la disegna.
0 per risposta № 3
Un modo per farlo è avere tutto ciò che si disegna definendo una variabile z-index e raccogliere tutto ciò che si disegna in un singolo punto e inserirli in un elenco che poi si ordina dallo z-index prima di disegnarlo.
ex:
Interface IDrawable{
int getZ();
void draw();
}
class drawMe implements IDrawable{
@overrider
draw(){
/// do my drawing
}
@override
int getZ() {return z; }
}
nel tuo disegno o nella tua classe principale
List<IDrawable> myList= new ArrayList();
myList.Add(new DrawMe());
e nel tuo metodo di disegno
for(IDrawable draw : myList.OrderBy(z){
draw.draw();
}
questo è comunque il concetto