Ho più elementi canvas creati da JavaScript. La mia domanda è: "Come posso inserire più elementi canvas su un elemento canvas?".Come posso inserire più elementi canvas in un elemento canvas?
risposta
Qui si va;
- Sarà afferrare ogni tela e li PNG
- accesso alla tela buffer di fare e scrivere i PNG di uno sopra l'altro al suo interno
- Scrivere di nuovo la tela del buffer in PNG e inviare alla IMG-tag
solo dare l'elemento canvas #buffer
display: none;
e tutto avverrà invisibile (controllare qui; http://jsfiddle.net/Allendar/UqxCY/2/).
HTML
<body onload="generatePNG()">
<canvas id="c1"></canvas>
<canvas id="c2"></canvas>
<canvas id="c3"></canvas>
<canvas id="buffer"></canvas>
<div id="output">Empty</div>
</body>
CSS
canvas[id^=c], div[id=output] {
border: 1px solid red;
}
canvas[id=buffer] {
border: 1px dotted green;
}
#output {
padding: 15px;
}
#output img {
border: 1px dotted blue;
}
JavaScript
function generatePNG() {
var b_canvas1 = document.getElementById("c1");
var b_context1 = b_canvas1.getContext("2d");
b_context1.fillRect(10, 50, 50, 50);
var b_canvas2 = document.getElementById("c2");
var b_context2 = b_canvas2.getContext("2d");
b_context2.fillRect(80, 50, 50, 50);
var b_canvas3 = document.getElementById("c3");
var b_context3 = b_canvas3.getContext("2d");
b_context3.fillRect(150, 50, 50, 50);
var img1 = new Image();
img1.src = b_canvas1.toDataURL("image/png");
var img2 = new Image();
img2.src = b_canvas2.toDataURL("image/png");
var img3 = new Image();
img3.src = b_canvas3.toDataURL("image/png");
var buffer = document.getElementById("buffer");
var buffer_context = buffer.getContext("2d");
buffer_context.drawImage(img1, 0, 0);
buffer_context.drawImage(img2, 0, 0);
buffer_context.drawImage(img3, 0, 0);
var buffer_img = new Image();
buffer_img.src = buffer.toDataURL("image/png");
var output = document.getElementById('output');
output.innerHTML = '<img src="' + buffer_img.src + '" alt="Canvas Image" />';
}
Questo funziona, ma si sta utilizzando jQuery. C'è una possibilità di farlo senza l'uso di jQuery? – Julian
Sicuro; la domanda viene aggiornata per funzionare ora completamente su JavaScript nativo. –
Non è necessario creare le immagini intermedie. Il metodo drawImage può prendere un'altra tela direttamente come l'immagine da disegnare. –
Forse qualcosa di simile, esportare la tela di origine a un'immagine, dipingere l'immagine sulla tela di destinazione (non testata):
function drawCanvasOnOtherCanvas(src, target) {
var img = new Image();
img.onload = function() {
target.drawImage(img, 0, 0);
};
img.src = src.toDataURL('image/png');
}
metodo drawImage di una tela può effettivamente prendi un'altra tela invece di un'immagine: non è necessario convertire prima le tele in immagini. (Vedere la WhatWG's documentation.)
Ho semplificato JSFiddle di Allendar dimostrare:
In sostanza, tutto quello che dovete fare è:
targetCanvas.drawImage(sourceCanvas, 0, 0);
e si dovrebbe essere pronti per partire.
- 1. Come caricare/caricare più elementi di canvas
- 2. Come posso utilizzare caratteri personalizzati in un elemento Canvas HTML5?
- 3. Errore URL Canvas Canvas/URL canvas sicuro
- 4. Mixing canvas e elementi CSS3
- 5. Come si crea un elemento Canvas in Dart?
- 6. Salva molti elementi canvas come immagine
- 7. Uso di dispatchDraw (Canvas canvas)
- 8. Ridimensionamento elemento canvas con risoluzione statica
- 9. Genera dati immagine da elemento HTML Canvas
- 10. Come disegnare al di fuori di un elemento canvas HTML?
- 11. Un elemento canvas html5 sullo sfondo della mia pagina?
- 12. Converti HTML5 canvas di elemento IMG
- 13. Come rendere glifi da FontAwesome su un elemento Canvas
- 14. html5 canvas - Come posso allungare il testo?
- 15. Come utilizzare più contesti di canvas?
- 16. cursore: puntatore su hover html5 elemento canvas
- 17. Rileva mouseSpostato evento per elemento canvas HTML
- 18. l'elemento Canvas HTML5 può essere creato dal costruttore Canvas.
- 19. Ispettore canvas HTML5?
- 20. Somiglianze tra Canvas HTML5 e Canvas Android
- 21. addEventListener nel tag Canvas
- 22. Come cancellare Tkinter Canvas?
- 23. Motion jpeg in html5 canvas
- 24. Converti canvas in PDF
- 25. JPopupMenu display in Canvas
- 26. Cambia contesto canvas
- 27. JavaFX Canvas delay
- 28. Visualizza onDraw (Canvas c) versus draw (Canvas c) in Android?
- 29. Canvas HTML5, converti canvas in PDF con jspdf.js
- 30. Disegno PNG su un elemento canvas - non mostra trasparenza
è possibile impostare un jsfiddle –