CanvasRenderingContext2D:rotate() 方法
基线 广泛可用
此功能已得到良好建立,并且可在许多设备和浏览器版本中使用。它自 2015年7月.
报告反馈
语法
Canvas 2D API 的
CanvasRenderingContext2D.rotate()
方法会向变换矩阵添加旋转。rotate(angle)
参数
angle
-
以弧度表示的顺时针旋转角度。可以使用
degree * Math.PI / 180
从度数计算弧度。
旋转中心点始终是画布原点。若要更改中心点,需要使用translate()
方法移动画布。
返回值
无(undefined
)。
示例
旋转形状
此示例将矩形旋转 45°。请注意,旋转中心是画布的左上角,而不是相对于任何形状的位置。
HTML
html
<canvas id="canvas"></canvas>
JavaScript
Canvas 2D API 的
CanvasRenderingContext2D.rotate()
方法会向变换矩阵添加旋转。const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// Point of transform origin
ctx.arc(0, 0, 5, 0, 2 * Math.PI);
ctx.fillStyle = "blue";
ctx.fill();
// Non-rotated rectangle
ctx.fillStyle = "gray";
ctx.fillRect(100, 0, 80, 20);
// Rotated rectangle
ctx.rotate((45 * Math.PI) / 180);
ctx.fillStyle = "red";
ctx.fillRect(100, 0, 80, 20);
// Reset transformation matrix to the identity matrix
ctx.setTransform(1, 0, 0, 1, 0, 0);
结果
旋转中心为蓝色。未旋转的矩形为灰色,旋转的矩形为红色。
围绕其中心旋转形状
此示例围绕其中心点旋转形状。为此,将以下步骤应用于矩阵
- 首先,
translate()
将矩阵的原点移动到形状的中心。 rotate()
按所需量旋转矩阵。- 最后,
translate()
将矩阵的原点移回其起始点。这是通过以负方向应用形状中心坐标的值来完成的。
HTML
html
<canvas id="canvas"></canvas>
JavaScript
该形状是一个矩形,其角位于 (80, 60),宽度为 140,高度为 30。其水平中心位于 (80 + 140 / 2),即 150。其垂直中心位于 (60 + 30 / 2),即 75。因此,中心点位于 (150, 75)。
Canvas 2D API 的
CanvasRenderingContext2D.rotate()
方法会向变换矩阵添加旋转。const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// Non-rotated rectangle
ctx.fillStyle = "gray";
ctx.fillRect(80, 60, 140, 30);
// Matrix transformation
ctx.translate(150, 75);
ctx.rotate(Math.PI / 2);
ctx.translate(-150, -75);
// Rotated rectangle
ctx.fillStyle = "red";
ctx.fillRect(80, 60, 140, 30);
结果
未旋转的矩形为灰色,旋转的矩形为红色。
规范
规范 |
---|
HTML 标准 # dom-context-2d-rotate-dev |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 定义此方法的接口:
CanvasRenderingContext2D