Canvas Con JavaScript Puro
Canvas Con JavaScript Puro
El método getContext().
Para comenzar a utilizar canvas, debemos recurrir al método getContext(), que es
el primer método a llamar cuando se trabaja con canvas. El getContext() define el
contexto del canvas en el que se esta trabajando, y que puede ser ‘2d’ o ‘3d’.
var canvas = document.getElementById('canvasJS'),
contexto = canvas.getContext('2d');
contexto.restore();
}
Se definen las propiedades para el dibujo de la forma, que son color, el contexto
del canvas (2d) y las posiciones en x y en y. Se comienza el dibujo de la figura con
beginPath(), en este ejemplo establecemos el trazado en ambas direcciones,
mediante los ciclos for partiendo de la posición en i, hacia x e y respectivamente.
El método moveTo(), posicionara el lápiz en el siguiente punto, y el método
lineTo(), trazara las líneas desde ese punto al siguiente en el ciclo. Todos estos
estados son guardados y recuperados a través del método restore(), que recupera
el estado previamente guardado en canvas. Para esta función queremos que la
grilla se cargue al momento de iniciar la página, por tanto inicializamos la función
en el archivo js.
contexto.beginPath();
contexto.strokeStyle = '#B20000';
contexto.lineWidth = 5.0;
//arco
contexto.arc(200, 200, 40, (Math.PI/180)*0, (Math.PI/180)*180, false);
contexto.stroke();
}
dibuarArcos();
…
//circulo
contexto.fillStyle = '#B20000';
contexto.arc(400, 200, 45, 2*Math.PI, false);
contexto.stroke();
Otro método que canvas incluye para trabajar con curvas, son
quadraticCurveTo(cpx, cpy, x, y) y, bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
que generan curvas Bezier cuadráticas y cubicas respectivamente.
La definición de una curva Bezier cuadrática especifica los atributos cpx y cpy que
son los que indican el punto que dara forma a la curva. Veamos el Ejemplo:
function curvaCuadratica()
{
contexto.beginPath();
contexto.strokeStyle = 'red';
contexto.lineWidth = 5.0;
contexto.moveTo(50,50);
contexto.quadraticCurveTo(100,125, 50, 200);
contexto.stroke();
}
curvaCuadratica();
function curvaBezier()
{
contexto.beginPath();
contexto.strokeStyle = 'red';
contexto.lineWidth = 5.0;
contexto.moveTo(50,50);
contexto.moveTo(250,50);
contexto.bezierCurveTo(200,125, 300,125, 250,200);
contexto.stroke();
}
curvaBezier();
Otro método interesante que ofrece canvas es el texto, que podemos personalizar
en el lienzo utilizando las propiedades que ofrece; los métodos que canvas ofrece
para dibujar texto son los siguientes:
strokeText(texto, x, y) Del mismo modo que el método stroke() para el
trazado, este método dibujará el texto especificado en la posición x,y como
una figura vacía (solo los contornos). Puede también incluir un cuarto valor
para declarar el tamaño máximo. Si el texto es más extenso que este último
valor, será encogido para caber dentro del espacio establecido.
fillText(texto, x, y) Este método es similar al método anterior excepto que
esta vez el texto dibujado será sólido (igual que la función para el trazado).
Y las propiedades para personalizar y darle estilo al texto son las siguientes:
font: Esta propiedad tiene una sintaxis similar a la propiedad font de CSS, y
acepta los mismos valores.
textAlign: Esta propiedad alinea el texto. Existen varios valores posibles:
start (comienzo), end (final), left (izquierda), right (derecha) y center
(centro).
textBaseline: Esta propiedad es para alineamiento vertical. Establece
diferentes posiciones para el texto (incluyendo texto Unicode). Los posibles
valores son: top, hanging, middle, alphabetic, ideographic y bottom.
Veamos el dibujo en el canvas con el clásico “HOLA MUNDO”, en el Ejemplo.
Hasta ahora hemos visto cada uno de los métodos de dibujo utilizando un solo tipo
de línea, pero, canvas también ofrece la posibilidad de darle un estilo a las líneas
que dibujamos. Estos estilos se logran utilizando los siguientes etodos:
lineWidht(); Este método se ha empleado anteriormente, y sirve para
cambiar el grosor de la línea.
lineCap(): Esta propiedad determina la forma de la terminación de la línea.
Puede recibir uno de estos tres valores: butt, round y square.
lineJoin(): Que determina la forma de coexion entre líneas y puede ser
round, bevel y miter.
MiterLimit(): Junto al lineJoin, determina cuánto la conexión de dos líneas
será extendida cuando la propiedad lineJoin es declarada con el valor miter.
shadowBlur(): Determina cuanto se extiende la sombra de una figura, entre
mas alto el valor mas extensa será la sombra, el valor debe ser un valor
doble positivo, no infinito. El valor predeterminado es 0.
shadowColor: Especifica el color que el navegador usa para dibujar
sombras. El valor de esta propiedad se especifica a menudo como
parcialmente transparente para mostrar el fondo.
shadowOffsetX(): Especifica el desplazamiento horizontal, en píxeles de la
pantalla, para las sombras.
shadowOffsetY(): Especifica el desplazamiento vertical, en píxeles de la
pantalla, para las sombras.
textAlign():