簡體   English   中英

是否可以在FabricJS中進行固定縮放

[英]Is it possible for fixed scaling in FabricJS

我在fabricjs中有矩形。 背景中有網格。 xAxis中的每個網格都是gridSizecolumn,yAxis是gridSizeRow

在此處輸入圖片說明

我如何用固定值縮放這些矩形,以使其根據背景網格增加

面臨的問題:使用以下代碼進行不適當的縮放。

areasCanvas.on('object:scaling',onObjectScaled);

function onObjectScaled(e){
    fabric.Object.prototype.objectCaching = false;
    var obj = e.target;

    avoidCrossingBoundaries(obj)
    console.log(obj)


    obj.set({
        left: Math.round(obj.left / gridSizeColumn) * gridSizeColumn,
        top: Math.round(obj.top / gridSizeRow) * gridSizeRow,
        // height: Math.round(obj.getHeight() / gridSizeRow) * gridSizeRow,
        // width: Math.round(obj.getWidth() / gridSizeColumn) * gridSizeColumn
    });
    obj.setHeight(Math.round(obj.getHeight() / gridSizeRow) * gridSizeRow)
    obj.setWidth(Math.round(obj.getWidth() / gridSizeColumn) * gridSizeColumn)

}

如果要更改矩形的widthheight ,則還需要在每個scale事件上重置其scaleX / scaleY

 const canvas = new fabric.Canvas("c") const img = new fabric.Rect({ left: 20, top: 20, width: 100, height: 100, fill: 'red' }) canvas.add(img) function onObjectScaled(e){ const gridSizeColumn = 20 const gridSizeRow = 20 fabric.Object.prototype.objectCaching = false; var obj = e.target; // avoidCrossingBoundaries(obj) // console.log(obj) obj.set({ left: Math.round(obj.left / gridSizeColumn) * gridSizeColumn, top: Math.round(obj.top / gridSizeRow) * gridSizeRow, // height: Math.round(obj.getHeight() / gridSizeRow) * gridSizeRow, // width: Math.round(obj.getWidth() / gridSizeColumn) * gridSizeColumn }); obj.set({ // set new width and height width: Math.round(obj.getHeight() / gridSizeRow) * gridSizeRow, height: Math.round(obj.getWidth() / gridSizeColumn) * gridSizeColumn, // reset scaleX and scaleY scaleX: 1, scaleY: 1 }) } canvas.on('object:scaling', onObjectScaled); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.22/fabric.js"></script> <canvas id='c' width="500" height="400"></canvas> 

注意:您沒有指定fabric.js版本,所以我假設您使用的是.getHeight() v2不再具有.getHeight() / .getWidth()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM