¿Podemos colocar un lienzo dentro del lienzo existente? Si podemos, ayúdenos a hacerlo en html5.Lienzo dentro de lienzo de html5
Respuesta
Hay dos formas posibles de interpretar su pregunta. Una es que quiere decir que en realidad nido canvas
elementos propios, como este:
<canvas id="outer">
<canvas id="inner"></canvas>
</canvas>
Esto es legal (según validator.nu), pero sin sentido. El contenido dentro del elemento canvas
es para el retroceso. La única forma en que se usa el contenido dentro del elemento canvas
es si el navegador no es compatible con canvas
, en cuyo caso el elemento interno canvas
no se verá de todos modos.
La otra forma posible de interpretar su pregunta es ¿puede mostrar la imagen que se muestra en un lienzo dentro de otro? Esto es bastante sencillo, se puede usar un elemento canvas
como el primer parámetro para context.drawImage()
. Si tiene dos canvas
elementos:
<canvas id="c1" width="200" height="200"></canvas>
<canvas id="c2" width="200" height="200"></canvas>
Entonces this script (using jQuery) se basará en la primera canvas
y luego añadir que las cuatro veces una imagen para el segundo 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);
Pero, de nuevo, ¿por qué lo haría? Puede replicar la imagen de la segunda canvas
anterior 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);
Así que en resumen: sí, es posible, pero no es realmente necesario en uso sencillo.
Hay muchas razones (por cierto no triviales) para usar un segundo lienzo. Por ejemplo, dibujar un gráfico en movimiento se hace más fácilmente copiando el gráfico a otro lienzo fuera de pantalla, despejando el lienzo principal, y luego copiando el lienzo fuera de pantalla offset a la izquierda en un píxel y dibujando los datos nuevos en la columna faltante. (Esto es necesario solo si el fondo del gráfico es transparente.) – Phrogz
@Phrogz Sí, también varias cosas de procesamiento de imágenes. Pero estoy de acuerdo con mi "no es realmente necesario en el uso simple", no creo que nada de eso sea relevante para esta pregunta o esta respuesta. – robertc
Quizás no, pero un recién llegado puede tomar su fraseología para significar que es excesiva, cuando a menudo es la manera más ordenada y más óptima para lograr algo. Si tiene un lienzo cambiante con elementos estáticos (por ejemplo, un juego), esta técnica tiene beneficios de rendimiento masivos: solo necesita dibujar los mapas de bits/vectores en un lienzo una vez, luego simplemente dibujar esto en el cuadro principal al actualizar. +1 para una buena respuesta sin embargo. – MickMalone1983
Sería absolutamente inútil anidar un lienzo dentro de otro lienzo. La página solo ve lo que está dentro de la etiqueta canvas
si el navegador no es compatible con canvas
. Así, acaba de hacer lo robertc dijo:
<canvas id="background">fallbacks/polyfills go in here...</canvas> <canvas id="foreground">.. or here, but not other canvases.</canvas>
- 1. inspector de lienzo HTML5?
- 2. unidades de lienzo html5
- 3. HTML5 getImageData sin lienzo
- 4. HTML5 Crear dinámicamente lienzo
- 5. html5 - arrastre un lienzo
- 6. Traducir un lienzo html5
- 7. HTML5 círculo lienzo texto
- 8. Impresión de un lienzo html5?
- 9. Agregar elementos al lienzo html5
- 10. Similitudes entre el lienzo HTML5 y el lienzo de Android
- 11. Cómo agregar un Lienzo html5 dentro de un DIV
- 12. Funcionalidad de arrastrar y soltar dentro del lienzo utilizando HTML5
- 13. Cómo deshabilitar seleccionar elemento de lienzo html5
- 14. ¿Desgarro en el lienzo HTML5?
- 15. "Borrado" en el lienzo html5
- 16. "googlemaps" arrastrando con lienzo html5
- 17. Círculo de lienzo HTML5 muy grande impreciso
- 18. Eventos de objeto de lienzo HTML5
- 19. Redibujar el lienzo de HTML5 increíblemente lento
- 20. Degradado rectangular con elemento de lienzo HTML5
- 21. desplazamiento/deslizamiento de fondo en lienzo html5
- 22. Lienzo HTML5 y ancho de línea
- 23. Base PNG de datos al lienzo HTML5
- 24. HTML5 drawimage de video a lienzo
- 25. html5 - elemento de lienzo - Varias capas
- 26. Cómo subir imágenes al lienzo de HTML5
- 27. lienzo html5 usa la imagen como máscara
- 28. Android - DrawLine de lienzo dentro de ImageView
- 29. Desplazamiento personalizado en el lienzo html5
- 30. adjuntar eventos del teclado al lienzo html5
Sírvanse proporcionar más detalles en cuanto a lo que en realidad se está tratando de lograr. – Phrogz