CanvasRenderingContext2D: getTransform() 方法

Baseline 已廣泛支援

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2020 年 7 月以來,它已在各大瀏覽器中可用。

CanvasRenderingContext2D.getTransform() 方法(Canvas 2D API)用於檢索當前應用於畫布上下文的變換矩陣。

語法

js
getTransform()

引數

無。

返回值

一個 DOMMatrix 物件。

變換矩陣描述如下:

[acebdf001]\left[ \begin{array}{ccc} a & c & e \\ b & d & f \\ 0 & 0 & 1 \end{array} \right]

注意: 返回的物件不是即時的,因此更新它不會影響當前的變換矩陣,而更新當前的變換矩陣也不會影響已經返回的 DOMMatrix

示例

在以下示例中,我們有兩個 <canvas> 元素。我們使用 CanvasRenderingContext2D.setTransform() 方法為第一個畫布上下文應用變換並繪製一個正方形,然後使用 getTransform() 方法從中檢索矩陣。

然後,我們透過將 DOMMatrix 物件直接傳遞給 setTransform() 方法,將檢索到的矩陣直接應用於第二個畫布上下文,並在其上繪製一個圓。

HTML

html
<canvas width="240"></canvas> <canvas width="240"></canvas>

CSS

css
canvas {
  border: 1px solid black;
}

JavaScript

js
const canvases = document.querySelectorAll("canvas");
const ctx1 = canvases[0].getContext("2d");
const ctx2 = canvases[1].getContext("2d");

ctx1.setTransform(1, 0.2, 0.8, 1, 0, 0);
ctx1.fillRect(25, 25, 50, 50);

let storedTransform = ctx1.getTransform();
console.log(storedTransform);

ctx2.setTransform(storedTransform);
ctx2.beginPath();
ctx2.arc(50, 50, 50, 0, 2 * Math.PI);
ctx2.fill();

結果

規範

規範
HTML
# dom-context-2d-gettransform-dev

瀏覽器相容性

另見