operaciones compuestas en lienzo Android
-
23-09-2019 - |
Pregunta
estoy empezando con el desarrollo de Android y vengo mundo JavaScript / HTML, así que estoy actualmente investigando las posibilidades del SDK de Android.
Las compatible con HTML 5 lienzo operaciones compuestos (véase el aquí ).
Es esto posible en un lienzo Android? Recorrí la API de la clase Canvas, pero no pude encontrar nada útil. Necesito por lo menos la operación de compuesto "fuente-in" o (si esto no es posible) "source-cima".
Solución
Composición está a cargo de dibujo sobre un Canvas
con un Paint
que utiliza un PorterDuffXfermode
.
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
aquí para obtener más información. También logré onPaint
anulación de modo que podemos aplicar esta composición de elementos que atraen themeselves.
Otros consejos
No he mirado en hacer ese tipo de operaciones antes, pero creo que hay una manera de hacerlo utilizando la Rect forma. Se pueden definir rectángulos para marcar las áreas que deben elaborarse en el lienzo, o para sacar de la imagen de origen, y la clase Rect
tiene alguna comparación características incorporadas. Por ejemplo para imitar una fuente-en, usted podría utilizar setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination)
para hacer su nuevo rectángulo tiene solamente la zona de intersección de las dos imágenes. A continuación, puede utilizar ese rectángulo como un argumento en uno de los comandos de dibujo de la tela, diciendo que sólo tomar los píxeles de la imagen de origen que están dentro de ese rectángulo. A continuación, controlar el dibujo en el eje Z por el orden en que se ejecutan los comandos de dibujo.
encontrado yo mismo. Los implementos PorterDuffXfermode todos estos modos de composición.