Frage

Ich bin gerade erst mit Android-Entwicklung und ich komme aus der JavaScript/HTML-Welt so bin ich derzeit daran, die Möglichkeiten des Android-SDK.

Der HTML-5-canvas unterstützt composite-Operationen (Siehe hier).

Ist das möglich in einem Android-Leinwand?Ich scannte die API der Canvas-Klasse, aber konnte nichts finden hilfreich.Ich muss mindestens die composite-Betrieb "Quelle" oder (falls dies nicht möglich ist) "source-atop".

War es hilfreich?

Lösung

Zusammensetzung, indem sie auf einem Canvas mit einem Paint behandelt wird, die eine PorterDuffXfermode verwendet.

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

Siehe hier für weitere Informationen. Ich habe auch außer Kraft setzen onPaint verwaltet, so dass wir diese Zusammensetzung auf Elemente anwenden können, die themeselves ziehen.

Andere Tipps

Ich habe nicht geschaut, das zu tun diese Art von Aktivitäten vor, aber ich denke, es gibt einen Weg, es zu tun, mit der Rect Form.Sie können festlegen, Rechtecke, um zu markieren, welche Bereiche gezogen werden sollte, die in die Leinwand, oder die zu nehmen aus dem Quellbild und der Rect Klasse hat einige Vergleich-Funktionen built-in.Zum Beispiel nachzuahmen, ein source-in, den Sie verwenden könnten setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination) new rectangle nur durchschnittene Gegend der beiden Bilder.Dann können Sie das Rechteck als argument in einem der Leinwand zeichnen, Befehlen, sagen, dass es nur nehmen Sie die Pixel aus dem Quellbild in das Rechteck.Sie Steuern die Zeichnung in der Z-Achse durch die Reihenfolge, in der die zeichnen-Befehle ausgeführt werden.

es selbst gefunden. Die PorterDuffXfermode implementiert alle diese Composite-Modi.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top