2011-09-05 18 views
7

Sto lavorando a un'app paint con canvas, e desidero consentire all'utente di disegnare solo in un'area selezionata. per quello posso usare il metodo clip(). ma se voglio che l'utente sia in grado di disegnare anche all'interno delle lettere - c'è un modo per usare clip() per il testo? c'è un altro modo per farlo?html canvas: clipping e text

grazie

+0

I non riesco a capire "ma se voglio che l'utente sia in grado di disegnare all'interno delle lettere anche" parte –

risposta

11

È possibile farlo, ma non utilizzando clip. Clip funziona solo con i percorsi e il testo non è un percorso.

Per ottenere l'effetto è necessario utilizzare una seconda area di memoria in memoria (non sulla pagina). Ecco come:

  1. Fai una tela in-memory, impostarlo su un larghezza e l'altezza in grado di contenere il testo
  2. disegnare il testo di quella tela
  3. in memoria impostare i in memoria contesto di globalCompositeOperation a 'fonte-in'
  4. Disegnare la cosa che si desidera troncato per il testo
  5. uso drawImage(in-memory-canvas, x, y) di mettere l'effetto appena creata sul vostro tela normale
+0

ottima risposta! grazie –

+0

beh, sta facendo alcuni problemi. quando disegno il testo "ritagliato" con un colore alfa inferiore al 100%, non riesco a disegnare di nuovo gli stessi pixel con un colore alfa% superiore. –