Scale: Cambiar escala
Si imaginas que el canvas es un papel cuadrículado, el método scale() aumenta o disminuye el tamaño de las cuadrículas. Este cambio afecta por separado al ancho y al alto, con lo cual se puede deformar el dibujo y, por ejemplo, convertir una circunferencia en una elipse.
Este método posee dos argumentos: el primero multiplica al ancho y el segundo al alto.
scale(factorAncho, factorAlto)
MIra el efecto sobre la cuadrícula del canvas en este ejemplo.
En este ejemplo dibujamos la cuadrícula del canvas sin transformación. Cada cuadrícula son 10 divisiones. Luego se aplica un escalado x2 al eje vertical, como ves ahora las distancias verticales son mayores. Cada cuadrícula sigue siendo 10 divisones, pero ahora estas divisiones miden el doble.
El rectángulo en el canvas superior uy en el inferior se dibjuan igual, con las mismas posiciones y dimensiones, sin embargo el inferio aparece como dole de alto y a doble distancia del lado superior.
En el siguiente ejemplo creamos un circulo rojo de radio 80 y en la posición X=300, Y=150. Al aplicar el método scale(1, 0.5) multipliamo el ancho por 1 (no cambia) y el alto por 0.5 (altura a la mitad) y a continuación se dibuja. Verás que el centro estará en X=300 Y=75 (no en 150), pues las coordenadas verticales se han multiplicaod po 0.5, la escala también afecta a las coordenadas.
Si vuelves a aplicar este método los cambios se harán sobre los valores actuales, no sobre los originales. Es decir si vuelves a hacer un scale(1, 0.5) la escala vertical será ahora 0.25 (0.5x0.5). Las transformaciones predefinidas son relativas al estado actual del canvas.