Guías de Make it Real
  • Introduction
  • Preparación
    • Conceptos básicos
    • El editor de texto
    • La línea de comandos
    • Git y Github
  • Git
    • Instalación y configuración
    • Conceptos y comandos esenciales
    • Ignorando archivos y carpetas
    • Trabajando con ramas
    • Repositorios remotos
    • Etiquetas
    • Reescribiendo la historia
    • Stashing
    • Github
  • HTML y CSS
    • Introducción a HTML
    • Introducción a CSS
    • Más elementos de HTML
    • Tablas
    • Formularios
    • El modelo de caja en CSS
    • Fondos (backgrounds)
    • Posicionamiento
    • Selectores CSS
    • Bordes, sombras y gradientes
    • Media Queries
    • Unidades en CSS
    • Flexbox
  • Bootstrap 3
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Personalizando Bootstrap
    • Utilizando plantillas
  • Bootstrap 4
    • Primeros pasos
    • Elementos básicos de HTML
    • Componentes
    • La grilla
    • Clases utilitarias
    • Personalizando Bootstrap
  • Ruby
    • Primeros pasos
    • Tipos y operadores
    • Variables y entrada de usuario
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Hashes
    • Métodos
    • Manipulación de archivos
    • Gemas
  • Programación Orientada a Objetos en Ruby
    • Clases y objetos
    • Métodos y atributos de clase
    • Herencia
    • Módulos
    • Excepciones
  • JavaScript I
    • Primeros pasos
    • Tipos y operadores
    • Variables
    • Condicionales
    • Ciclos
    • Arreglos
    • Más cadenas de texto
    • Funciones
    • Objetos literales
    • Manipulación de archivos
  • JavaScript en el navegador
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Local Storage
    • History API
    • Canvas
    • Notificaciones Web
    • Audio y Video
    • Arrastrar y soltar
    • JSON
    • Realizando peticiones HTTP
  • jQuery
    • Primeros pasos
    • Manipulando HTML
    • Escuchando eventos
    • Plugins
    • Realizando peticiones con AJAX
  • JavaScript II
    • Prototipos
    • Librerías (Node.js)
    • ES6
    • Uso de this (call, apply, bind)
    • Programación funcional
    • Scope, hoisting, closures
    • Programación asincrónica
    • Testing
  • HTTP y Sinatra
    • Primeros pasos con Sinatra
    • El protocolo HTTP
    • Rutas
    • Formularios
    • Cookies y sesión
  • Bases de datos
    • Bases de datos relacionales
    • SQL
    • DDL
    • MongoDB
  • Ruby on Rails I
    • Primeros pasos
    • Arquitectura
    • Rutas
    • Layouts y rendering
    • ActiveRecord - Modelos
    • ActiveRecord - Migraciones
    • ActiveRecord - Validaciones
    • ActiveRecord - Asociaciones
    • ActiveRecord - Scopes
    • ActiveRecord - Callbacks
    • Recursos REST
    • Formularios
    • Autenticación con Devise
    • Sass y Bootstrap
    • Envío de correos
    • Carga de imágenes
    • Seeds
    • Heroku
  • Ruby on Rails II
    • Usando JavaScript (y jQuery) en Rails
    • Testing en Ruby
    • Testing en Rails
    • Creando una Web API
    • Web Sockets
  • Express.js
    • Primeros Pasos
    • El protocolo HTTP
    • Rutas
    • Vistas
    • Middlewares y manejo de errores
    • Formularios
    • Cookies y sesión
  • Express.js II
    • Mongoose
    • Web Sockets
    • Autenticación
    • Envío de correos
    • Cargar imágenes
    • Deployment
    • Testing
    • Creando una Web API
  • React
    • Primeros pasos
    • JSX
    • Componentes
    • Más sobre estado
    • Formularios
    • Peticiones HTTP con Axios
    • React Hooks
    • React Context
    • React Bootstrap
    • React Router
    • Carga de Imágenes
    • Testing
    • Estructura de carpetas
    • Componentes de clase
  • Redux
    • Primeros pasos
    • Action creators
    • Usando la librería react-redux
    • Middlewares
    • Operaciones asincrónicas con redux-thunk
    • Combinando funciones reductoras
    • Testing
    • Redux Tool Kit
  • Algoritmos
    • Describiendo un algoritmo
    • Complejidad (Big-O)
    • Estructuras de datos
    • Recursión
    • Ordenamiento
    • Búsqueda
    • Programación dinámica
  • Python
    • Primeros Pasos
    • Tipos y Variables
    • Funciones
    • Control de Flujo
    • Listas
    • Ciclos
    • Diccionarios, Tuplas y Sets
  • NumPy
    • Primeros Pasos
    • Arreglos
    • Arreglos Multidimensionales
    • Estadística con NumPy
    • Distribución Estadística
  • Pandas
    • Primeros Pasos
    • Inspección y Selección de Datos
    • Modificando Dataframes
    • La Función Lambda
    • Aggregates en Pandas
    • Múltiples Tablas
Powered by GitBook
On this page
  • Primeros pasos
  • El contexto
  • Algunos ejemplos
  1. JavaScript en el navegador

Canvas

PreviousHistory APINextNotificaciones Web

Last updated 2 years ago

Canvas es una etiqueta de HTML5 que nos permite trabajar con animaciones avanzadas, dibujar elementos, crear juegos, entre otros.

Canvas es un plano cartesiano invertido donde la esquina superior izquierda es el punto (0,0). Si nos movemos hacia la derecha aumentamos nuestra posición en el eje horizontal o eje X y si nos movemos hacia abajo aumentamos nuestra posición en el eje vertical o eje Y.

Es importante conocer cómo funciona este sistema de coordenadas ya que por medio de este posicionaremos todos nuestros elementos dentro del canvas. Dibujar una linea entre en punto A y un punto B, dibujar un cuadro de 100px por 100px en las coordenadas definidas, pintar una imagen en las coordenadas (100, 100), son solo el principio de lo que podemos lograr con canvas.

Todas las interacciones que vayamos a tener con nuestro canvas se deben realizar a través de un lenguaje de scripting. En este caso vamos a utilizar JavaScript.

Primeros pasos

Para empezar a trabajar con el API de canvas, primero debemos crear el elemento en nuestro HTML, luego lo seleccionamos con nuestro JavaScript, y por último obtenemos el contexto sobre el cual vamos a trabajar.

Cabe resaltar que si queremos cambiar el tamaño del canvas lo debemos hacer a través de las propiedades width y height de la etiqueta <canvas> y no usando CSS. De la primera manera definimos la resolución actual del canvas, de la segunda manera el contenido del canvas se estira o encoge para coincidir con el espacio definido.

El contexto

El contexto es el plano sobre el cual vamos a trabajar, este puede ser 2D, 3D usando WebGL, o un renderizado de Bitmap.

El contexto lo obtenemos utilizando el método getContext() sobre nuestro elemento canvas. Este método recibe como argumento el contexto sobre el cual vamos a trabajar. Ejemplo: 2d, webgl, bitmaprenderer.

Algunos ejemplos

En este primer ejemplo veamos dos opciones para dibujar un cuadrado en nuestro canvas. En la primera opción vamos a construir un cuadrado utilizando 4 lineas individuales, y en la segunda opción usamos el método rect() del API de canvas.

En este segundo ejemplo vamos a usar arc(), el API para dibujar círculos; lineas; y traslaciones, y rotaciones para dibujar un Pacman.

Algo a resaltar de este ejemplo es cómo manejamos los estilos dentro del canvas. Colores, tamaño, y demás, lo manejamos desde nuestro JavaScript y no desde el CSS como lo hemos venido haciendo hasta ahora.

En este último ejemplo veremos cómo podemos usar canvas para crear animaciones.

Podemos notar que en nuestra animación utilizamos el método requestAnimationFrame() este método es un método global de JavaScript. Este método es un ciclo que nos permite sincronizar nuestra animación con la tasa de actualización de pantalla del navegador.

Para conocer más sobre el API de contexto 2D de canvas puedes visitar

MDN web docs