2011-09-27 10 views
5
this.context.drawImage(myimage, 0, 0); 

Mettere l'immagine sulla tela è abbastanza ben coperto in tutto il web. Ma come lo rimuovo dopo che è lì?Come rimuovere, nascondere, rimuovere o eliminare un'immagine da una tela html?

+3

La tela HTML5 è giustamente chiamata in quanto si comporta quasi come una tela reale, è possibile dipingere (renderizzare) le cose lì ma non è possibile rimuoverla. Puoi dipingerci sopra con un'altra immagine, puoi cancellare i pixel che hanno reso quell'immagine, oppure puoi cancellare completamente la tela. Questa risposta StackOverflow mostra come cancellare solo i pixel dell'immagine occupa http://stackoverflow.com/questions/3458244/removing-an-image-from-a-canvas-in-html5 – kreek

+0

Thx. Ora, perché questa domanda non è stata visualizzata all'inizio dei risultati di ricerca per "[html5] [canvas] remove"? Lo trova se si aggiunge "rimozione" alla query di ricerca, ma un po 'bisogno di sapere qual è la linea dell'oggetto per capire come trovarlo. –

risposta

4

Opzione 1:
Disegnare su di esso un rettangolo dello stesso colore dello sfondo.

Opzione 2 (lavora per lo sfondo non banale, ma più lento):
Get the pixel data dalla tela prima di disegnare l'immagine, quindi ridisegnare che i dati dei pixel per rimuovere l'immagine.

+0

Sono andato con una routine di "ridisegno" che cancella e ridisegna l'intero canvas quando richiesto, in quanto non è animato o particolarmente affamato di risorse. –

10

La tela è una superficie di disegno immediata. Ciò significa che si esegue un comando su di esso (drawImage o fillRect) e lo fa, e non gliene frega niente di ciò che ha appena fatto. Non c'è rovina di qualcosa.

Hai avuto difficoltà a cercarlo perché non esiste una "rimozione" per una tela. Tutto ciò che sa è che ha alcuni pixel di un certo colore da da qualche parte. Non ha idea di dove.

Per semplificare un po ', ci sono generalmente due modi:

  1. Cancella l'intera area, e disegnare tutto da capo TRANNE immagine quello che non vuoi tratte
  2. Usa due tele, una che ha solo l'immagine e una con tutte le altre cose. Cancella questa tela con clearRect (0,0, larghezza, altezza) e il gioco è fatto.

Noterai in 1. che probabilmente dovrai iniziare a tenere traccia delle cose che disegni su tela se vuoi che alcune di esse vengano rimosse o riposizionate in modo selettivo. Instillare la persistenza dell'oggetto, o meglio trasformare la tela da una superficie di disegno immediata in una superficie di disegno mantenuta, è qualcosa che fanno molte librerie di tela. Se vuoi farlo da solo, ho scritto alcuni tutorails per aiutare le persone a iniziare.

Se si desidera esaminare le librerie, dare uno sguardo a easel.js. È abbastanza imparabile.

2

Quindi mi è venuto in mente un modo semplice e veloce per cancellare la tela. Ho appena inserito i miei tag <canvas> tra i tag <p> con un ID, quindi ogni volta che ho avuto bisogno della mia area di disegno ho modificato i miei tag <p> modificando il innerHTML, funziona come un incantesimo.

Problemi correlati