如何使用 FabricJS 自定義畫布的視口?
在本文中,我們將學習如何使用 FabricJS 自定義畫布的視口。視口是使用者在畫布上可見的區域。我們可以使用 `viewportTransform` 屬性來自定義視口,該屬性允許我們控制視口的變換。
語法
new fabric.Canvas(element: HTMLElement|String, { viewportTransform: Array }: Object)引數
element − 此引數是<canvas> 元素本身,可以使用 Document.getElementById() 或<canvas> 元素的 ID 獲取。FabricJS 畫布將在此元素上初始化。
options (可選) − 此引數是一個物件,它為我們的畫布提供額外的自定義選項。使用此引數,可以更改與畫布相關的許多屬性,例如顏色、游標、邊框寬度等等,其中 `viewportTransform` 就是一個屬性。它接受一個包含 6 個值的陣列,這些值決定了平面上的變換。其預設值為 `canvas.viewportTransform = [1, 0, 0, 1, 0, 0]`。
示例 1
將 `viewportTransform` 屬性作為鍵傳遞給類
讓我們來看一個如何自定義畫布視口的程式碼示例。在此示例中,我們使用了值 `[0.7, 0.1, 0.5, 0.9, 20, 50]`,分別表示scaleX、skewY、skewX、scaleY、translationX 和 translationY。
<!DOCTYPE html>
<html>
<head>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
<h2>Customizing the viewport of the canvas using FabricJS </h2>
<p>Select an area around the object to see the viewports.</p>
<canvas id="canvas"></canvas>
<script>
// Initiate a canvas instance
var canvas = new fabric.Canvas("canvas", {
viewportTransform: [0.7, 0.1, 0.5, 0.9, 20, 50]
});
// Creating an instance of the fabric.Rect class
var circle = new fabric.Circle({
left: 215,
top: 100,
radius: 50,
fill: "red",
});
// Adding it to the canvas
canvas.add(circle);
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);
</script>
</body>
</html>示例 2
將 `viewportTransform` 屬性作為鍵傳遞,並使用自定義值縮小物件
讓我們來看另一個程式碼示例,我們將顯示一個按 80% 縮放並向右下角平移(無傾斜)的變換。
<!DOCTYPE html>
<html>
<head>
<!-- Adding the Fabric JS Library-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/510/fabric.min.js"></script>
</head>
<body>
<h2>Customizing the viewport of the canvas using FabricJS </h2>
<p>Select an area around the object to see the viewports.</p>
<canvas id="canvas"></canvas>
<script>
// Initiate a canvas instance
var canvas = new fabric.Canvas("canvas", {
viewportTransform: [0.8, 0, 0, 0.8, 50, 50]
});
// Creating an instance of the fabric.Rect class
var circle = new fabric.Circle({
left: 215,
top: 100,
radius: 50,
fill: "red"
});
// Adding it to the canvas
canvas.add(circle);
canvas.setWidth(document.body.scrollWidth);
canvas.setHeight(250);
</script>
</body>
</html>
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP