2011-05-17 15 views
5

¿Es posible dibujar una sola forma rellena en el lienzo con diferentes estilos de trazo?Dibujar una sola forma rellena con diferentes estilos de trazo

En otras palabras, ¿puedo dibujar un triángulo azul y que cada lado tenga un color diferente?

Soy consciente de que hay un menor de solución óptima:

  1. ser un nuevo camino, dibujar el triángulo y sin golpes, rellenarlo, a continuación, cierre el camino
  2. comenzar un nuevo camino, volver a dibujar la primera cara con el primer golpe de color, cerrar el trazado
  3. comenzar un nuevo camino, volver a dibujar el segundo lado con un golpe de diferente color, cerrar el trazado
  4. comenzar un nuevo camino, volver a dibujar el tercer lado con un golpe de diferente color, cierre la ruta

En resumen, dibuja una figura llena sin trazos, luego vuelve a dibujar cada lado con un estilo de trazo único.

Esto no es un gran problema para un solo triángulo, pero si tienes muchas formas más complejas, esto parece ineficiente.

Entonces, ¿es posible dibujar una sola forma con diferentes estilos de trazo a lo largo de varios segmentos de la ruta?

Respuesta

4

La respuesta corta es no, no de una manera incorporada de todos modos. El motivo es que con cada nueva llamada al stroke() recorrerá toda la ruta, no solo las partes que aún no se han tocado.

Siempre puede hacer su propia función que, por ejemplo, toma un montón de puntos o tipos de segmentos (tendría que hacer su propia clase) dándole a cada uno un color, y tener esa función analizarlos y hacer el dibujo. Pero eso es lo mejor que obtendrás.

Te darás cuenta rápidamente de que se abren nuevos y emocionantes problemas, como qué hacer con la mitigación. Y si usted no sabe lo que es biselado, se dará cuenta muy rápido al hacer esto :)

(... y algo más de ese problema puede ser aliviado mediante el uso de ctx.linecap = 'round'

+0

¿Está usted (o Alguien más) ¿Seguro que no hay ninguna manera? Realmente triste, me gustaría dibujar una curva pero colorearla de manera diferente a lo largo del camino. Abrir un nuevo camino como el que dijiste afaik rompería la mitra. –

+0

Bueno, hay una manera de haz lo que quieras, usando una ruta en una región de recorte para colorear. –

+0

En realidad, ¿puedes darme una imagen de lo que quieres exactamente? –

Cuestiones relacionadas