Grupos de transparencia en CanvasRenderingContext2D

¿Hay alguna manera de combinar múltiples operaciones de dibujo en un contexto de representación de lienzo 2D de tal manera que suconjunto ¿El resultado se compone sobre el contenido anterior del lienzo, en lugar de que cada operación de dibujo esté compuesta por sí misma?

Una aplicación: me gustaría dibujar una línea translúcida con una punta de flecha, y me gustaría evitar una mayor opacidad en aquellas áreas donde la línea y la punta de la flecha se superponen.

Muchos otros modelos de renderizado admiten tales características. SVG tiene unopacidad de grupo ajuste, descrito en la sección 14.5. losReferencia PDF describe "Grupos de transparencia" en la sección 7.3. En muchas aplicaciones gráficas, un usuario puede construir capas y luego componerlas como un todo.

Supongo que podría configurar un segundo lienzo invisible para usarlo como una imagen fuera de la pantalla, mostrar mi contenido y luego usarglobalAlpha para componer el resultado en el lienzo principal con la translucidez deseada. Pero espero que haya una solución más elegante, incluso si no puedo encontrarla en los documentos hasta ahora.

Combinar múltiples rutas en CanvasRenderingContext2D para rellenar y trazar como un conjunto aparentemente tiene un objetivo similar en mente. Pero el enfoque allí parece ser cómo realizar operaciones booleanas en las rutas, probablemente la formaclíper lo hace. Entonces, para esta publicación aquí, no estoy interesado en manipular los caminos por adelantado; Quiero poder dibujar cada trazo como lo haría normalmente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta