如何使用 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>
廣告