CanvasRenderingContext2D: transform() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Canvas 2D API 的 CanvasRenderingContext2D.transform() 方法将当前变换乘以该方法参数所描述的矩阵。这允许您缩放、旋转、平移(移动)和倾斜画布上下文。

注意:另请参阅 setTransform() 方法,该方法将当前变换重置为单位矩阵,然后调用 transform()

语法

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

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

参数

a (m11)

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

b (m12)

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

c (m21)

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

d (m22)

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

e (m41)

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

f (m42)

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

如果一个点的原始坐标是(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);

结果

规范

规范
HTML
# dom-context-2d-transform-dev

浏览器兼容性

另见