CanvasRenderingContext2D:transform() 方法

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Canvas 2D API 的 CanvasRenderingContext2D.transform() 方法用于将由该方法的参数所描述的矩阵与当前的变换相乘。你可以缩放、旋转、平移和倾斜上下文。

备注: 还可以查看 setTransform() 方法,该方法将当前变换重置为单位矩阵,然后调用 transform() 方法。

语法

js
transform(a, b, c, d, e, f)

变换矩阵的描述:[ a c e b d f 0 0 1 ] \left[ \begin{array}{ccc} a & c & e \ b & d & f \ 0 & 0 & 1 \end{array} \right]

参数

am11

矩阵中第一行第一列的单元格。

bm12

矩阵中第二行第一列的单元格。

cm21

矩阵中第一行第二列的单元格。

dm22

矩阵中第二行第二列的单元格。

em41

矩阵中第一行第三列的单元格。

fm42

矩阵中第二行第三列的单元格。

如果一个点原始坐标为 (x,y)(x, y),经过变换后,其坐标将变为 (ax+cy+e,bx+dy+f)(ax + cy + e, bx + dy + f)。这意味着:

  • ef 控制上下文的水平和垂直平移。
  • bc0 时,ad 控制上下文的水平和垂直缩放。
  • ad1 时,bc 控制上下文的水平和垂直倾斜。

返回值

无(undefined)。

示例

倾斜形状

这个示例将一个矩形进行了垂直(.2)和水平(.8)方向的倾斜,同时保持缩放和平移不变。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

ctx.transform(1, 0.2, 0.8, 1, 0, 0);
ctx.fillRect(0, 0, 100, 100);

结果

规范

Specification
HTML
# dom-context-2d-transform-dev

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
transform

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见