Domanda

Sto iniziando con lo sviluppo Android e vengo da JavaScript mondo / HTML in modo Attualmente sto indagando le possibilità del SDK di Android.

La tela HTML 5 supporta le operazioni composite (Vedi qui ).

Questo è possibile in una tela di Android? Ho scansionato le API della classe Canvas, ma non ho trovato nulla di utile. Ho bisogno di almeno composito operazione "source-in" o (se questo non è possibile) "source-cima".

È stato utile?

Soluzione

composizione è gestita da disegnare su un Canvas con un Paint che utilizza un PorterDuffXfermode.

Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);

qui per maggiori informazioni. Sono anche riuscito a scavalcare onPaint in modo da poter applicare questa composizione di elementi che attirano themeselves.

Altri suggerimenti

Non ho guardato a fare questo tipo di operazioni, prima, ma penso che ci sia un modo per farlo utilizzando la Rect forma. È possibile definire rettangoli di tracciare quali aree dovrebbero essere coinvolti in tela, o che togliere dell'immagine sorgente, e la classe Rect ha alcune caratteristiche di confronto incorporato. Ad esempio, per imitare una fonte-in, è possibile utilizzare setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) per rendere il vostro nuovo rettangolo avere solo l'area di intersezione delle due immagini. Quindi è possibile utilizzare quel rettangolo come argomento in uno dei comandi di tiraggio del Canvas, dicendogli di prendere solo i pixel dell'immagine di origine che si trovano all'interno di quel rettangolo. È quindi controllare il disegno nella Z-asse per l'ordine in cui vengono eseguiti i comandi draw.

Trovato io stesso. Il PorterDuffXfermode implementa tutte queste modalità composite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top