Tutorial de Canvas (HTML5)
Canvas es un nuevo elemento en HTML, por tanto tendrĂ¡s que tener un navegador moderno y actualizado, por ejemplo Firefox. Internet Explorer 8 y versiones antiguas, no la soportan. Canvas que en español es Lienzo es una area rectangular usada para contener grĂ¡ficos, estos se crean mediante scripts (por lo general con JavaScript). Se pueden tener varios elementos Canvas en una pĂ¡gina HTML.
Para crear un elemento Canvas se utiliza la siguiente sintaxis:
Siempre se da un identificador Ăºnico para el elemento cĂ³mo tambien un ancho y un alto. En el medio se coloca un mensaje al usuario que aparece si utiliza un navegador antiguo.
Por defecto un Canvas no tiene borde pero se le puede agregar con estilo CSS:
Dibujar un rectangulo:
El siguiente cĂ³digo dibuja un rectĂ¡ngulo azul:
< !DOCTYPE html>
< html>
< body>
< canvas id="miLienzo" width="200" height="100" style="border:1px solid #c3c3c3;">
TĂº navegador no soporta canvas
< /canvas>
< script>
var c=document.getElementById("miLienzo");
var ctx=c.getContext("2d");
ctx.fillStyle="#0000FF";
ctx.fillRect(10,10,180,80);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Se crea un canvas con id miLienzo, un ancho igual a 200 y una altura igual a 100.
Con esta lĂnea obtenemos el elemento con el que vamos a trabajar:
Luego llamamos al mĂ©todo getContext() y le pasamos como parĂ¡metro la cadena "2d". El objeto getContext("2d") es un objeto incorporado en HTML5 con muchas propiedades y mĂ©todos para dibujar circulos, cuadros, texto, imĂ¡genes y mĂ¡s.
Esta lĂnea pinta el rectĂ¡ngulo de color azul:
Y esta otra dibuja el rectangulo:
El mĂ©todo fillRect(x,y,ancho,alto); recibe cuatro parĂ¡metros: los dos primeros son las coordenadas que ubican el rectangulo, las otras dos son el ancho y alto. Este mĂ©todo dibuja un rectangulo relleno (el color que especĂfiquemos). La coordenada 0,0 estĂ¡ ubicada en la parte superior izquierda del canvas.
Con lo anterior obtenemos el siguiente resultado:
Una fantĂ¡stica funcionalidad de Canvas es que si le das clic derecho sobre las figuras creadas puedes guardarlas en tu pc como una imagen.
La anterior figura se puede representar de la siguiente manera:
Dibujar una lĂnea:
El siguiente cĂ³digo traza una lĂnea horizontal en toda la mitad del canvas:
< !DOCTYPE html>
< html>
< body>
< canvas id="Canv" width="200" height="100" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas
< /canvas>
< script>
var c=document.getElementById("Canv");
var ctx=c.getContext("2d");
ctx.moveTo(0,50);
ctx.lineTo(200,50);
ctx.stroke();
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Para trazar una lĂnea se utilizan los mĂ©todos:
moveTo(x,y) Coordenada donde empieza la lĂnea.
lineTo(x,y) Coordenada donde finaliza la lĂnea.
stroke(); Dibuja la lĂnea.
Obtenemos la referencia del canvas:
Obtenemos el contexto:
El punto inicial de la lĂnea:
El punto final de la lĂnea:
Dibuja la lĂnea:
Resultado:
Coordenadas de la anterior figura:
Un pentagono dibujado con lineas:
Ubicar una imagen sobre el canvas:
Utilizamos el método:
drawImage(img) Este mĂ©todo puede recibir otros parĂ¡metros adicionales.
< !DOCTYPE html>
< html>
< body>
< p>Imagen a usar:</p>
< img border="0" height="150" width="150" src="html5.png" id="miImagen" />
< p>Canvas:</p>
< canvas id="miCanvas" width="200" height="200" style="border:1px solid #d3d3d3;">
TĂº navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("miCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("miImagen");
ctx.drawImage(img);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Cargamos una imagen:
Creamos un canvas:
Obtenemos el canvas:
Obtenemos el contexto:
Obtenemos la imagen a través de su id:
Dibujamos la imagen:
El parĂ¡metro del mĂ©todo es la imagen.
Resultado:
Imagen a usar:

Canvas:
Dibujar texto:
Se utiliza uno de estos métodos:
fillText(texto,x,y) Dibuja un texto normal sobre el canvas
strokeText(texto,x,y) Dibuja un texto "sin relleno" sobre el canvas
< !DOCTYPE html>
< html>
< body>
< canvas id="lienzo" width="150" height="50" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("lienzo");
var ctx=c.getContext("2d");
ctx.font="20px Georgia";
ctx.fillText("Codigo Jerry",10,25);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Definimos la fuente del texto con un ancho de 20px:
Dibuja el texto a partir de la coordenada (10,25):
Resultado:
Con el mĂ©todo strokeText() este serĂa el resultado:
Dibujar un cĂrculo:
Utilizamos el mĂ©todo arc() para dibujar cĂrculos o semicĂrculos:
arc(x,y,radio,anguloInicial,anguloFinal) Este mĂ©todo recibe cinco parĂ¡metros obligatorios y uno opcional. Los dos primeros son las coordenadas para ubicar el cĂrculo, el tercero es el radio del circulo, y los dos ultimos son los Ă¡ngulos en radianes.
La siguiente imagen explica lo que hacen los parĂ¡metros de la funcion arc() con estos valores:
X=100;
Y=74;
Radio=50;
Angulo inicial=0;
Angulo final=1.5*Pi
El siguiente cĂ³digo dibuja un circulo relleno de color azul:
< !DOCTYPE html>
< html>
< body>
< canvas id="myCanvas" width="200" height="150" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(100,75,50,0,2*Math.PI);
ctx.fillStyle="blue";
ctx.fill();
< /script>
< /body>
< /html>
Resultado:
Nota: Si vas a dibujar un circulo completo, el Ă¡ngulo final debe recibir este valor: 2*Math.PI.
Un completo tutorial (en inglĂ©s) del elemento canvas aquĂ.
Para crear un elemento Canvas se utiliza la siguiente sintaxis:
<canvas id="miCanvas" width="200" height="100">TĂº navegador no soporta canvas</canvas>
Siempre se da un identificador Ăºnico para el elemento cĂ³mo tambien un ancho y un alto. En el medio se coloca un mensaje al usuario que aparece si utiliza un navegador antiguo.
Por defecto un Canvas no tiene borde pero se le puede agregar con estilo CSS:
<canvas id="miCanvas" width="200" height="100" style="border:1px solid">TĂº navegador no soporta canvas</canvas>
Dibujar un rectangulo:
El siguiente cĂ³digo dibuja un rectĂ¡ngulo azul:
< !DOCTYPE html>
< html>
< body>
< canvas id="miLienzo" width="200" height="100" style="border:1px solid #c3c3c3;">
TĂº navegador no soporta canvas
< /canvas>
< script>
var c=document.getElementById("miLienzo");
var ctx=c.getContext("2d");
ctx.fillStyle="#0000FF";
ctx.fillRect(10,10,180,80);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Se crea un canvas con id miLienzo, un ancho igual a 200 y una altura igual a 100.
Con esta lĂnea obtenemos el elemento con el que vamos a trabajar:
var c=document.getElementById("miLienzo");
Luego llamamos al mĂ©todo getContext() y le pasamos como parĂ¡metro la cadena "2d". El objeto getContext("2d") es un objeto incorporado en HTML5 con muchas propiedades y mĂ©todos para dibujar circulos, cuadros, texto, imĂ¡genes y mĂ¡s.
Esta lĂnea pinta el rectĂ¡ngulo de color azul:
ctx.fillStyle="#0000FF";
Y esta otra dibuja el rectangulo:
ctx.fillRect(10,10,180,80);
El mĂ©todo fillRect(x,y,ancho,alto); recibe cuatro parĂ¡metros: los dos primeros son las coordenadas que ubican el rectangulo, las otras dos son el ancho y alto. Este mĂ©todo dibuja un rectangulo relleno (el color que especĂfiquemos). La coordenada 0,0 estĂ¡ ubicada en la parte superior izquierda del canvas.
Con lo anterior obtenemos el siguiente resultado:
Una fantĂ¡stica funcionalidad de Canvas es que si le das clic derecho sobre las figuras creadas puedes guardarlas en tu pc como una imagen.
La anterior figura se puede representar de la siguiente manera:
Dibujar una lĂnea:
El siguiente cĂ³digo traza una lĂnea horizontal en toda la mitad del canvas:
< !DOCTYPE html>
< html>
< body>
< canvas id="Canv" width="200" height="100" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas
< /canvas>
< script>
var c=document.getElementById("Canv");
var ctx=c.getContext("2d");
ctx.moveTo(0,50);
ctx.lineTo(200,50);
ctx.stroke();
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Para trazar una lĂnea se utilizan los mĂ©todos:
moveTo(x,y) Coordenada donde empieza la lĂnea.
lineTo(x,y) Coordenada donde finaliza la lĂnea.
stroke(); Dibuja la lĂnea.
Obtenemos la referencia del canvas:
var c=document.getElementById("Canv");
Obtenemos el contexto:
var ctx=c.getContext("2d");
El punto inicial de la lĂnea:
ctx.moveTo(0,50);
El punto final de la lĂnea:
ctx.lineTo(200,50);
Dibuja la lĂnea:
ctx.stroke();
Resultado:
Coordenadas de la anterior figura:
Un pentagono dibujado con lineas:
Ubicar una imagen sobre el canvas:
Utilizamos el método:
drawImage(img) Este mĂ©todo puede recibir otros parĂ¡metros adicionales.
< !DOCTYPE html>
< html>
< body>
< p>Imagen a usar:</p>
< img border="0" height="150" width="150" src="html5.png" id="miImagen" />
< p>Canvas:</p>
< canvas id="miCanvas" width="200" height="200" style="border:1px solid #d3d3d3;">
TĂº navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("miCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("miImagen");
ctx.drawImage(img);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Cargamos una imagen:
<img border="0" height="150" width="150" src="html5.png" id="miImagen" />
Creamos un canvas:
<canvas id="miCanvas" width="200" height="200" style="border:1px solid #d3d3d3;">
TĂº navegador no soporta canvas</canvas>
TĂº navegador no soporta canvas</canvas>
Obtenemos el canvas:
var c=document.getElementById("miCanvas");
Obtenemos el contexto:
var ctx=c.getContext("2d");
Obtenemos la imagen a través de su id:
var img=document.getElementById("miImagen");
Dibujamos la imagen:
ctx.drawImage(img);
El parĂ¡metro del mĂ©todo es la imagen.
Resultado:
Imagen a usar:

Canvas:
Dibujar texto:
Se utiliza uno de estos métodos:
fillText(texto,x,y) Dibuja un texto normal sobre el canvas
strokeText(texto,x,y) Dibuja un texto "sin relleno" sobre el canvas
< !DOCTYPE html>
< html>
< body>
< canvas id="lienzo" width="150" height="50" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("lienzo");
var ctx=c.getContext("2d");
ctx.font="20px Georgia";
ctx.fillText("Codigo Jerry",10,25);
< /script>
< /body>
< /html>
ExplicaciĂ³n:
Definimos la fuente del texto con un ancho de 20px:
ctx.font="20px Georgia";
Dibuja el texto a partir de la coordenada (10,25):
ctx.fillText("Codigo Jerry",10,25);
Resultado:
Con el mĂ©todo strokeText() este serĂa el resultado:
Dibujar un cĂrculo:
Utilizamos el mĂ©todo arc() para dibujar cĂrculos o semicĂrculos:
arc(x,y,radio,anguloInicial,anguloFinal) Este mĂ©todo recibe cinco parĂ¡metros obligatorios y uno opcional. Los dos primeros son las coordenadas para ubicar el cĂrculo, el tercero es el radio del circulo, y los dos ultimos son los Ă¡ngulos en radianes.
La siguiente imagen explica lo que hacen los parĂ¡metros de la funcion arc() con estos valores:
X=100;
Y=74;
Radio=50;
Angulo inicial=0;
Angulo final=1.5*Pi
El siguiente cĂ³digo dibuja un circulo relleno de color azul:
< !DOCTYPE html>
< html>
< body>
< canvas id="myCanvas" width="200" height="150" style="border:1px solid #d3d3d3;">
Tu navegador no soporta canvas</canvas>
< script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(100,75,50,0,2*Math.PI);
ctx.fillStyle="blue";
ctx.fill();
< /script>
< /body>
< /html>
Resultado:
Nota: Si vas a dibujar un circulo completo, el Ă¡ngulo final debe recibir este valor: 2*Math.PI.
Un completo tutorial (en inglĂ©s) del elemento canvas aquĂ.
No hay comentarios