Possiamo posizionare una tela all'interno della tela esistente? Se possibile, aiutaci a farlo in html5.Tela all'interno di html5
risposta
Ci sono due modi possibili per interpretare la tua domanda. Uno è che si intende effettivamente nido canvas
elementi stessi, come questo:
<canvas id="outer">
<canvas id="inner"></canvas>
</canvas>
Questo è legale (secondo validator.nu), ma inutile. Il contenuto all'interno dell'elemento canvas
è per il fallback. L'unico modo in cui viene utilizzato il contenuto all'interno dell'elemento canvas
è se il browser non supporta canvas
, nel qual caso l'elemento interno canvas
non verrà comunque visualizzato.
L'altro modo di interpretare la domanda è possibile visualizzare l'immagine visualizzata su una tela all'interno di un'altra. Questo è abbastanza semplice, un elemento canvas
può essere utilizzato come primo parametro su context.drawImage()
. Se si dispone di due canvas
elementi:
<canvas id="c1" width="200" height="200"></canvas>
<canvas id="c2" width="200" height="200"></canvas>
Poi this script (using jQuery) trarrà sul primo canvas
e quindi aggiungere che quattro volte come immagine al secondo canvas
:
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(50,50,100,100);
var c2 = $('#c2');
var ctx2 = c2[0].getContext('2d');
ctx2.drawImage(c1[0],0,0,100,100);
ctx2.drawImage(c1[0],100,0,100,100);
ctx2.drawImage(c1[0],0,100,100,100);
ctx2.drawImage(c1[0],100,100,100,100);
Ma ancora una volta, perché dovresti? È possibile replicare l'immagine del secondo canvas
sopra just using one:
var c1 = $('#c1');
var ctx1 = c1[0].getContext('2d');
ctx1.fillRect(25,25,50,50);
ctx1.fillRect(125,25,50,50);
ctx1.fillRect(25,125,50,50);
ctx1.fillRect(125,125,50,50);
Quindi, in sintesi: sì, è possibile, ma non è davvero necessario in uso semplice.
Ci sono un sacco di ragioni (ovviamente non banali) per l'utilizzo di una seconda tela. Ad esempio, il disegno di un grafico in movimento è più semplice, copiando il grafico su un altro sfondo non in linea, cancellando l'area di disegno principale e quindi copiando l'offset posteriore della tela fuori schermo a sinistra di un pixel e disegnando i nuovi dati nella colonna mancante. (Ciò è necessario solo se lo sfondo del grafico è trasparente.) – Phrogz
@Phrogz Sì, anche varie cose di elaborazione delle immagini. Ma io sostengo il mio "non è davvero necessario in un semplice uso", non penso che nessuna di queste cose sia rilevante per questa domanda o questa risposta. – robertc
Forse no, ma un nuovo arrivato potrebbe prendere il tuo testo per indicare che è eccessivo, quando è spesso il modo più ordinato e più ottimale per realizzare qualcosa. Se hai un canovaccio con elementi statici (ad esempio, un gioco), ci sono enormi vantaggi in termini di prestazioni di questa tecnica: devi solo disegnare i bitmap/vettori su una tela una volta, quindi semplicemente disegnare questa su quella principale durante l'aggiornamento. +1 per una buona risposta però. – MickMalone1983
Sarebbe assolutamente inutile annidare una tela all'interno di un'altra tela. La pagina vede solo ciò che si trova all'interno del tag canvas
se il browser non supporta lo canvas
. Quindi, basta fare quello che robertc detto:
<canvas id="background">fallbacks/polyfills go in here...</canvas> <canvas id="foreground">.. or here, but not other canvases.</canvas>
- 1. Traduzione di una tela HTML5
- 2. Scorrimento personalizzato su tela HTML5
- 3. Scorrimento orizzontale su tela. HTML5
- 4. Disegna video su tela HTML5
- 5. Come caricare l'immagine nella tela HTML5
- 6. Ridisegnare la tela HTML5 incredibilmente lenta
- 7. Accelera il rendering pixel della tela HTML5
- 8. HTML5 Rimuovi oggetto disegno precedente su tela
- 9. Come centrare la tela in html5
- 10. Rendering/Ritorno tela HTML5 in ReactJS
- 11. allegare eventi della tastiera alla tela HTML5
- 12. Sovrapposizione immagine su tela HTML5 su immagine
- 13. Come disegnare poligoni su una tela HTML5?
- 14. Nice Trascina su una tela HTML5
- 15. HTML5 Dimensioni e risoluzione della tela
- 16. HTML5 Disegno su tela righe multicolore
- 17. tela Carica HTML5 come un blob
- 18. È possibile deformare un'immagine su tela html5?
- 19. Disegno Linee tratteggiate su tela HTML5?
- 20. L'animazione tela HTML5 non funziona correttamente
- 21. firefox e radialgradient (utilizzando la tela html5)
- 22. Creazione di un gioco di auto semplice con tela HTML5
- 23. Disegno di curve di direzione della freccia in tela HTML5
- 24. Come ottengo la larghezza e l'altezza di una tela HTML5?
- 25. Come tagliare parte di un testo nella tela HTML5?
- 26. Emscripten - C++ con supporto di tela html5 puro (non WebGL)
- 27. Rilevamento di collisione perfetta per pixel su tela HTML5
- 28. iPhone/iPad HTML5 Riempimento della tela di fondoTesto test
- 29. Disegno di testo con tratto esterno con tela HTML5
- 30. Cattura solo una porzione di tela con .todataurl Javascript/HTML5
Si prega di fornire maggiori dettagli su ciò che in realtà si sta cercando di realizzare. – Phrogz