La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Capítulo 9 Dibujo en el canvas

Presentaciones similares


Presentación del tema: "Capítulo 9 Dibujo en el canvas"— Transcripción de la presentación:

1 Capítulo 9 Dibujo en el canvas

2 Dibujo en el canvas Dicha aplicación se puede hacer muy compleja. Aquí veremos la forma de cambiar colores, anchos de línea y grabar la imagen utilizando AJAX y PHP. Tomando como partida los conocimientos que revisamos en el capítulo básico de canvas, iniciemos a desarrollar nuestra aplicación.

3 9.1 Dibujar una línea en el canvas con el ratón sostenido
Una de las ventajas en esta aplicación es que el algoritmo en sí mismo es muy parecido al que utilizamos con otras herramientas, por ejemplo Flash. En esta sección mostraremos todo el listado, y en las siguientes sólo el código dentro del contexto. Abra el archivo canvasBase.html y guárdelo como canvasDibujo.html

4 Dibujar una línea con botón sostenido, archivo canvasDibujo.html

5 Dibujar una línea con botón sostenido, archivo canvasDibujo.html

6 Método getBoundingClientRect
Cuando JavaScript detecta las coordenadas del movimiento del ratón, o de la zona en que es pulsado o levantado el botón, nos da las coordenas dentro del navegador, no dentro del canvas, lo cual complica los cálculos. La mejor manera de resolverlo es por medio del método getBoundingClientRect, que nos regresa a la posición relativa del objeto solicitado dentro de la página en un objeto. Este método tiene la desventaja de que funciona sólo en Safari 4, Firefox 3, Opera 9.5, e Internet Explorer 8 y versiones inferiores lo tienen mal implementado (o digamos, diferente). La buena noticia es que se ejecuta correctamente el canvas de HTML5 y no tenemos problema con el método.

7 Método getBoundingClientRect
Una vez que detectamos las coordenadas, lo que resta es simplemente guardar el punto inicial en variables y cuando detectemos que se suelta el botón del ratón, procedemos a dibujar la línea. Tenemos comentado el detector de eventos para el movimiento del ratón, verá que se generan múltiples líneas a partir del origen, es decir, del punto donde pulsamos el ratón. Guarde su archivo.

8 9.2 Dibujar una línea continua con el ratón en el canvas
En esta sección dibujaremos una línea continua cada vez que movamos el ratón sobre el canvas con el botón sostenido. Funcionará como un lápiz sobre nuestro lienzo. En esta parte de la aplicación, tendremos sólo un color (amarillo) y sólo un ancho. En las siguientes secciones usaremos diferentes colores. Abra el archivo de la sección anterior, canvasDibujo.html y guárdelo como ncanvasDibujoLineaContinua.html. Estamos utilizando una variable boleana llamada bandera, la cual nos indica si estamos dibujando o no. En realidad lo que estamos haciendo es dibujar pequeñas líneas rectas que lucen como una línea continua, y cuando lo realizamos, el punto final de la primera línea forma parte del punto inicial de la siguiente,

9 9.3 Cambiar los colores y el ancho de la línea
Utilizaremos elementos HTML que se encuentran fuera del canvas para poder modificar el color de la línea su ancho, así como crear un botón para limpiar el lienzo. En el caso del siguiente listado, mostraremos (casi) todo el código, ya que existen varios cambios y añadimos algunos elementos HTML. Añadimos dos selectores: uno para el color, que regresa la cadena bcorrespondiente al mismo, y otro para el ancho de la línea, que simplemente regresa un número entre 1 y 5. Cada vez que el usuario selecciona una opción la modificamos en el canvas detectándola con el evento onchange y modificamos el valor en el script. Por medio del botón Borra todo ejecutamos el método clearRect() de toda el área.

10 9.4 Guardar la imagen del canvas
Al tener nuestra herramienta básica de dibujo siempre existirá la inquietud de grabar nuestras obras de arte. Para ello necesitamos algunas herramientas que no son propiamente HTML5, como son AJAX y un poco de PHP. Es importante remarcar que esta funcionalidad sólo opera correctamente en un servidor Web, es decir, necesita instalar en su computadora local una herramienta tipo XAMPP, WAMP o MAMP, o subir este ejercicio a un servidor, ya que PHP sólo funciona en estos ambientes.

11 Métodos En la primera línea de la función recuperamos la información del canvas y la almacenamos en el objeto data. Creamos luego el objeto XMLHttpRequest y luego el detector de eventos cuando la carga se ha finalizado. Por medio del método open enviamos la información al archivo snapshot.php, que también se debe subir al servidor en la misma carpeta. Si usted cambia su ubicación debe de agregar la ruta.

12 Métodos Con el método setRequestHeader, le indicamos que vamos a enviar datos binarios y con el método send() le decimos que inicie la carga, enviando los datos del canvas. En la función de callback recibimos el nombre del archivo generado desde PHP. A continuación enlistamos el archivo PHP que recibe la información del canvas y la almacena en un archivo. Si usted cuenta con otro lenguaje de servidor, como ASP o similar, deberá sustituir al script y su llamado en la línea 10 del listado anterior.

13 Archivo para subir la imagen con PHP, archivo snapshot.php

14 Procedimiento En este script recibimos la información del canvas por medio de la función file_get_contents(), que es similar a la función file(), pero podemos indicarle un inicio y una longitud de los datos leídos. Si la lectura del archivo falla, regresará un valor booleano falso. Quitamos el encabezado de la información, que no es parte de la imagen, y lo convertimos al formato base64, que es como se manejan las imágenes. Generamos un nombre de archivo por medio de un número aleatorio grande y grabamos el archivo por medio del modo “wb” o escribir datos de tipo binario. Cerramos el archivo y regresamos el nombre del mismo a la página HTML. Si existió algún error en el proceso, regresamos a la cadena ERROR.

15 Ejecución en servidor web
Como habíamos comentado, este ejercicio hay que ejecutarlo en algún servidor Web, ya sea remoto o local, para que PHP se pueda ejecutar. Al terminar, usted deberá tener su archivo PNG en la carpeta de imágenes, el cual también tendrá que crear en el servidor.


Descargar ppt "Capítulo 9 Dibujo en el canvas"

Presentaciones similares


Anuncios Google