--- title: CanvasRenderingContext2D.rotate() slug: Web/API/CanvasRenderingContext2D/rotate tags: - metodo translation_of: Web/API/CanvasRenderingContext2D/rotate ---
El método CanvasRenderingContext2D.rotate() de la API Canvas 2D añade una rotación a la matriz de transformación.
void ctx.rotate(angulo);

angulogrado* Math.PI / 180 si se quiere calcular a partir de un valor de grado sexagesimal.El centro de rotación es siempre el orígen del canvas. Para cambiar el centro de rotación hay que mover el canvas mediante el método {{domxref("CanvasRenderingContext2D.translate", "translate()")}}.
En este ejemplo se rota un rectangulo 45º. Nótese que el centro de rotación es la esquina superior izquierda del canvas y no un punto cualquiera relativo a alguna figura.
<canvas id="canvas"></canvas>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
// origen del punto de transformación
ctx.arc(0, 0, 5, 0, 2 * Math.PI);
ctx.fillStyle = 'blue';
ctx.fill();
// rectángulo sin rotar
ctx.fillStyle = 'gray';
ctx.fillRect(100, 0, 80, 20);
// rectángulo rotado 45º
ctx.rotate(45 * Math.PI / 180);
ctx.fillStyle = 'red';
ctx.fillRect(100, 0, 80, 20);
// se reinicia la matriz de transformación a la matriz identidad
ctx.setTransform(1, 0, 0, 1, 0, 0);
El centro de rotación es azul. El rectángulo no rotado es gris, y el rectángulo rotado es rojo.
{{ EmbedLiveSample('Rotating_a_shape', 700, 180) }}
Este ejemplo rota una figura alrededor del punto central de ésta. Para realizarlo se aplican estos pasos a la matriz de transformación:
rotate() rota la matriz la cantidad deseada.translate() mueve el origen de la matriz de nuevo a su punto inicial. Esto se realiza utilizando los valores del centro de coordenadas de la figura en dirección negativa.<canvas id="canvas"></canvas>
La figura es un rectángulo con su esquina en (80, 60), un ancho de 140 y un alto de 30. El centro de la coordenada horizontal está en (80 + 140 / 2) = 150. Su centro en la coordenada vertical será (60 + 30 / 2) = 75. Por tanto, el punto central está en (150, 75).
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
// rectángulo sin rotar
ctx.fillStyle = 'gray';
ctx.fillRect(80, 60, 140, 30);
// Matriz de transformación
ctx.translate(150, 75);
ctx.rotate(Math.PI / 2);
ctx.translate(-150, -75);
// rectángulo rotado
ctx.fillStyle = 'red';
ctx.fillRect(80, 60, 140, 30);
El rectángulo no rotado es gris, y el rectángulo rotado es rojo.
{{ EmbedLiveSample('Rotating_a_shape_around_its_center', 700, 180) }}
| Especificación | Status | Comentarios | 
|---|---|---|
| {{SpecName('HTML WHATWG', "scripting.html#dom-context-2d-rotate", "CanvasRenderingContext2D.rotate")}} | {{Spec2('HTML WHATWG')}} | 
{{Compat("api.CanvasRenderingContext2D.rotate")}}