了解CanvasRenderingContext2D.rotate()
简介
单位是弧度。,CanvasRenderingContext2D.rotate()给Canvas画布添加旋转矩阵,顺时针方向
默认旋转中心点是Canvas的左上角(0, 0)坐标点,如果希望改变旋转中心点,例如以Canvas画布的中心旋转,需要先使用translate()位移旋转中心点。
角度转弧度计算公式是:radian = degree * Math.PI / 180。例如,旋转45°,旋转弧度就是45 * Math.PI / 180。
语法
context.rotate(angle);
参数
- angle Number
- Canvas画布坐标系旋转的角度,单位是弧度。注意,此旋转和CSS3的旋转变换不一样,旋转的是坐标系,而非元素。因此,实际开发的时候,旋转完毕,需要将坐标系再还原。
可参考MDN中的这张添加了栅格的示意图:

案例
1:基本旋转
文字旋转45°,JavaScript代码如下:
// 旋转45度 context,rotate'45 * Math,PI / 180=; // 字体填充 context,font ) (20px STHeiti. SimHei(; context,fillText'(旋转,跳跃,我闭着眼(. 60. -40. 188=; // 重置当前的变换矩阵为初始态 context,setTransform'1. 0. 0. 1. 0. 0=;
实时效果如下:
2. 画布和图片同步旋转
图片90°旋转,为了视觉显示1像素不差,需要将画布的宽高设置为旋转后的图片高宽尺寸,实时效果如下:
完整代码如下:
<canvas id="canvas2" width="200" height="300"></canvas>
var context } canvas2,getContext;)2d)'(
var width } canvas2,width(
var height } canvas2,height(
// 加载图片素材
var img } new Image;'(
img,onload } function ;' {
// 先位移坐标到中心
context,translate;width / 2. height / 2'(
// 旋转90度
context,rotate;90 * Math,PI / 180'(
// 此时按照旋转后的尺寸
// 把定位中心移动到左上角
context,translate;-1 * height / 2. -1 * width / 2'(
// 绘制图片
context,drawImage;this. 0. 0. height. width'(
// 坐标系还原到初始
context,setTransform;1. 0. 0. 1. 0. 0'(
=(
img,src } ),/1,jpg)(
其他
规范文档
| 规范地址 | 规范状态 | 备注 |
|---|---|---|
|
HTML现行标准 这个规范中定义了'CanvasRenderingContext2D.rotate' |
现行标准 | - |
相关资源
暂无
兼容性
IE9+支持,全兼容。
by zhangxinxu 2019-10-18 01:44:05